2012-03-23 10 views
1

私は、電子メールメッセージの処理にMassTransitを使用してきました。このコードを使用する:http://meandaspnet.blogspot.com/2009/10/how-to-binary-serialize-mailmessage-for.html私は自分の電子メールをバイナリシリアル化してサービスバスに公開することができます。それらも正しく処理されます。しかしないAangifteOmzetbelastingのための - 奇妙なことは、私はSerializableMailMessageを公開する場合、これが動作することであるMassTransitバイナリのシリアル化されたメッセージが正しく処理されない

 // 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 
     } 
    } 

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())); 
        }); 

は今、私は新しいタイプとハンドラを追加しました。インタフェースの順序を変更すると、AangifteOmzetBarastingでは有効であり、SerializableMailMessageでは機能しません。同様に:

// Check out the sequence of the Consumes<> ! 
     public class MessageHandler : 
     Consumes<AangifteOmzetbelasting>.All, 
     Consumes<SerializeableMailMessage>.All 

後者の場合、SerializedMailMessgesはサービスバスにも表示されません。どちらも次の方法で公開されています:

Bus.Instance.Publish(object) 

私はここで間違っていますか?

答えて

2

タイプ情報のないメッセージを公開することは本当に苦労しています。タイプ情報はルーティングのために非常に重要です。

ここでは、objectとして公開する必要がある場合は、Bus.Instance.FastActivator("Publish", message, { message.GetType() })のように(参照されたMagnumライブラリにあるはずです)を見ることができるFastActivatorヘルパーがありますか?私はパラメータの順序が間違っているかもしれませんが、メソッド名、パラメータ、ジェネリック型のパラメータが必要です。

さらに、必要に応じて、この問題を解決するためにMTメーリングリストに参加することをお勧めします。 https://groups.google.com/forum/#!forum/masstransit-discuss

+0

お返事ありがとうございます - 私はPublish <>を使用して公開しようとしましたが、コメントに応じて廃止されました。タイプ情報を提供する公開方法を変更できないのですか? –

+0

シリアライズされたメッセージ用とXMLメッセージ用の2​​つのバスを使用して解決しました。 –

関連する問題