Я использую MassTransit для обработки сообщений электронной почты. Используя этот код: http://meandaspnet.blogspot.com/2009/10/how-to-binary-serialize-mailmessage-for.html Я могу двоично сериализовать свои электронные письма и публиковать их в моей служебной шине. Они тоже обрабатываются правильно.
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. Если я изменяю порядок интерфейса - он работает для AangifteOmzetbelasting, а не для SerializableMailMessage. Вот так:
// Check out the sequence of the Consumes<> !
public class MessageHandler :
Consumes<AangifteOmzetbelasting>.All,
Consumes<SerializeableMailMessage>.All
В последнем случае SerializedMailMessges также не отображаются на служебной шине. Оба опубликованы с использованием:
Bus.Instance.Publish(object)
Что я здесь не так делаю?