1

NServiceBus では、SendOnly バスを作成できます。これは、別のサービスにメッセージを送信するだけであることを意味します。これには、送信サービス用のローカル キューはまったく必要ないように思えますが、これを構成できませんでした。

var bus = Configure.With()
    .DefiningCommandsAs(t => typeof(MyNamespace.Messaging.Markers.ICommand).IsAssignableFrom(t))
    .DefaultBuilder()
    .XmlSerializer()
    .MsmqTransport()
    .UnicastBus()
    .SendOnly();

次の例外を与えます。

エンドポイント名を生成できませんでした。Configure.DefineEndpointName(...) を使用して独自の規則を指定してください。

を追加することでこの問題を解決でき.DefineEndpointNameますが、実際には使用されないため、このサービスのキューを作成するのは不適切な形式のようです。

送信専用バスのローカル キューを作成する必要を回避する方法はありますか? そうでない場合、このモードでこのローカル キューが必要なのはなぜですか?

4

2 に答える 2

2

送信のみかどうかに関係なく、すべてのエンドポイントに名前が必要です。これは、キューの作成とは何の関係もありません(はい、キュー名==エンドポイント名)。定義エンドポイント名を追加すると、キューが作成されないことがわかります。また、送信されたメッセージには、意味がないため、アドレスへの返信が含まれないことに注意してください。

于 2013-03-03T06:36:42.823 に答える
1

これは、メッセージの発信元であると思います。送信キューは、MSMQ の本質的な部分です。ack メッセージを許可し、NServiceBus bus.Reply 機能をサポートします。

この場合は不要に思えますが、SendOnly が特定のメッセージング スタイルを使用するように開発者を誘導しようとしていると考えると。MSMQ が多くのスタイルのメッセージングをサポートしていることを考えると、これは私の見解ではそのような問題ではありません。

于 2013-02-27T20:59:29.337 に答える