2

現在、NServiceBus 経由で MSMQ にオブジェクトを送信しています。

public void SendMessage(AvailInfo message) 
{
    var Bus = Configure.With()
          .DefaultBuilder()
          .Log4Net()
          .UseTransport<Msmq>()
          .XmlSerializer()
          .UnicastBus()
          .CreateBus()
          .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install()); 

    bus.Send(message);
}

キューのコンシューマーが ActiveXMessageFormatter を明示的に使用するように要求していることを除いて、すべて正常に機能していました。

質問: 上記のスニペットでメッセージを送信するときに、これをどのように/どこで設定しますか?

前もって感謝します!

4

1 に答える 1

2

NServiceBus メッセージ フォーマッタは、すべてのメッセージング エンドポイントが相互に通信するために使用されることになっています。NServiceBus には、XML (デフォルト、.NET XmlSerializer とは異なります)、JSON、BSON、および Binary の 4 つが組み込まれています。

ActiveXMessageFormatter は System.Messaging クラスであり、上記のフォーマッターとは関係ありません。

NServiceBus を MSMQ のクライアント API として使用しようとしているように思えますが、実際にはそうではありません。技術的には、NServiceBus 用に独自のメッセージ フォーマッタを実装することもできますが、このシナリオではお勧めしません。

これが 1 回限りの状況である場合、このシナリオでは System.Messaging 名前空間を介して MSMQ と直接対話することを検討します。トランザクション メッセージを使用すると、メッセージ ハンドラーに存在するアンビエント トランザクションと対話します。

于 2013-07-25T16:18:09.360 に答える