1

サブスクライバーとして機能するために、独自のアプリケーションで NServiceBus をホストしています。ソリューションには 4 つのプロジェクトがあります。1. コントラクト - イベント インターフェイスを宣言します。2. ホスト - バスを開始するための API を備えたクラス ライブラリ。3. ハンドラー - ここでは、イベント ハンドラーが実装されます。4. すべてを実行するためのコンソール アプリケーション。

  • 必要なコンソール アプリケーション名に従ってエンドポイント名が正しく設定され、それに応じてキューが作成されていることがわかります。
  • パブリッシャー イベントを正常にサブスクライブしました。

問題: パブリッシャーがサブスクライバーにメッセージを送信しようとすると、エンドポイント名ではなく、イベント ハンドラーの名前空間に従って名前が付けられたキューに送信しようとします。

私が得る例外は、パブリッシャーがサブスクライバーの入力キューを見つけることができなかったことです。

健全性チェックのために、ハンドラーの名前空間に従って名前が付けられた入力キューを手動で作成し、実際にイベントの受信を開始しました。

では、これは NServiceBus のバグですか、それとも非常に重要なことを見逃しているのでしょうか?

ありがとう....

4

2 に答える 2

0

私は問題を見つけました、そしてそれは私のものでした...

パブリッシャーはまだRavenDBに古いサブスクライバーを持っていたため、もう存在しないこれらのキューにもイベントを公開しようとしました...

作業を楽にするために、MSMQを使用してサブスクリプションを保存するように構成しました。

于 2013-02-24T13:36:34.307 に答える
0

同様の問題がありました。エンドポイントの名前を変更しましたが、Publish() を呼び出すと、まだ古いキューに送信しようとしていました。localhost:8080 (RavenDB) にアクセスし、すべてのドキュメントとデータベースを削除しましたが、それでも同じ問題が発生しました。RavenDB サービスを再起動すると問題が解決したため、メモリなどにキャッシュする必要があります。

于 2014-02-26T22:55:53.883 に答える