1

NServiceBus パッケージ (3.2.8) の AzureServiceBusFullDuplex サンプルに基づく小さなサンプル プロジェクトを実装しましたが、わずかな違いがあります。クラウドにリスナーがあり、オンプレミスにセンダーがあります。2 つのオンプレミス エンドポイントを実行するまでは問題なく動作します。私がそれを行い、2 番目の enapoint がメッセージを送信すると、応答は最初のエンドポイントによって受信されます。3 番目のエンドポイントを開始してメッセージを送信すると、2 番目のエンドポイントで応答が受信されます。

論理的には、すべてのエンドポイントが応答メッセージ コントラクトにサブスクライブされ、最後に登録されたエンドポイントがそのタイプのすべてのメッセージを受信したことを理解しています。しかし、クラウド内にハンドラーが 1 つしかない同じメッセージ タイプの複数の送信者がいる場合、どのようにシナリオを実装すればよいでしょうか? これは、ネイティブ Azure Service Bus キューでのセッション サポートに似ています。

4

2 に答える 2

2

アレクセイ、

オンプレミスのエンドポイントが同じ入力キューで構成されており、最初に応答を取得したエンドポイントがそれを取得しているように聞こえます。これを検証して、それらがすべて異なるキューでリッスンしていることを確認できますか?

よろしく、イヴ

于 2012-10-25T13:54:26.037 に答える
1

そこで、
1) AzureServiceBusQueueConfig でキュー名が指定されていない
2) コードでキュー名を指定して、プロトタイプを完成させました。

                _configure = Configure.With()
           .DefaultBuilder()
           .Log4Net(new log4net.Appender.ColoredConsoleAppender())
           .JsonSerializer()
           .DefineEndpointName(queueName)
           .AzureServiceBusMessageQueue()
           .IsTransactional(false)
           .MessageForwardingInCaseOfFault()
           .UseInMemoryTimeoutPersister()
           .DisableSecondLevelRetries()
           .InMemorySubscriptionStorage()
           .UnicastBus()
               .DoNotAutoSubscribe()
               .LoadMessageHandlers()
           .CreateBus();

AzureServiceBusQueueConfig.cs で、エンドポイント名をキュー名として使用し、キュー名が構成されていない場合は、前の構成呼び出しに由来するエンドポイント名が使用されることがわかりました。

于 2012-10-29T15:10:38.833 に答える