我一直在使用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