我一直在使用MassTransit来处理电子邮件。使用此代码:http://meandaspnet.blogspot.com/2009/10/how-to-binary-serialize-mailmessage-for.html我可以将我的电子邮件序列化并将它们发布到我的服务总线。他们也正确处理。MassTransit二进制序列化消息处理不正确
Bus.Initialize(
sbc =>
{
sbc.EnableMessageTracing();
sbc.ReceiveFrom("msmq://localhost/MyQueue");
sbc.UseMsmq();
sbc.VerifyMsmqConfiguration();
sbc.UseMulticastSubscriptionClient();
sbc.UseBinarySerializer();
sbc.Subscribe(subs => subs.Instance(new MessageHandler()));
});
现在我添加了一个新的类型和处理程序:
// Check out the sequence of the Consumes<> !
public class MessageHandler :
Consumes<SerializeableMailMessage>.All,
Consumes<AangifteOmzetbelasting>.All
{
public void Consume(AangifteOmzetbelasting message)
{
// Some code - method will NOT be called
}
public void Consume(SerializeableMailMessage mailMessage)
{
// Some code - this method is called by Mass Transit
}
}
奇怪的是,这个如果我发表一个SerializableMailMessage工作 - 而不是AangifteOmzetbelasting。如果我改变界面顺序 - 它适用于AangifteOmzetblasting,而不适用于SerializableMailMessage。像这样:
// Check out the sequence of the Consumes<> !
public class MessageHandler :
Consumes<AangifteOmzetbelasting>.All,
Consumes<SerializeableMailMessage>.All
在后一种情况下,SerializedMailMessges也不会出现在服务总线上。这两个使用发布:
Bus.Instance.Publish(object)
我在做什么错在这里?
感谢您的回复 - 我尝试使用Publish <>发布,但根据评论已过时。我不能更改我的发布方法来提供类型信息吗? – 2012-03-26 08:10:37
我们使用两条总线来解决它:一条用于序列化消息,一条用于XML消息。 – 2012-03-27 11:07:04