2

NServiceBus を使用した経験がありません。私のシナリオが実現できるかどうかを確認したいと思います。A と B の 2 台のマシンがあります。マシン A には、nservicebus 経由で同じマシンに存在するキューにメッセージを送信するコンポーネントがデプロイされていました。メッセージを受信する必要がある別のコンポーネントがあります。残念ながら、今はマシン A にデプロイすることはできません (マシン B で動作します) が、送信者が既に送信したメッセージを取得したいと考えています。出来ますか?次のようにレシーバーで入力キューを定義しようとすると:

    <MsmqTransportConfig InputQueue="RetrieverClient2@MachineA" ErrorQueue="RetrieverClient2_errors@MachineA" NumberOfWorkerThreads="1" MaxRetries="5"/>

例外が発生します: 入力キューは、このプロセスと同じマシン上にある必要があります。このリモート キューが存在することがわかっている場合に、このリモート キューからメッセージを取得するために使用できる構成方法はありますか?

4

2 に答える 2

1

「localhost」のキューの場合、「@localhost」を含めないでください。設定は次のようになります。

<MsmqTransportConfig InputQueue="RetrieverClient2" ErrorQueue="RetrieverClient2_errors" NumberOfWorkerThreads="1" MaxRetries="5"/>

@ symobl は、リモート キューを参照しているとエンドポイントに認識させます。MSMQ でリモート トランザクション受信を実行しようとするとパフォーマンスが低下するため、エンドポイントの入力キューにリモート キューを使用することはできません。(「ディストリビューターによる負荷分散」の「MSMQ v4 について」セクションを参照してください)

展開トポロジの変更が達成しようとしているものである場合、Udiの答えは非常に正しいです。

于 2013-05-16T12:57:15.517 に答える