3

不明な数のサブスクライバーにメッセージを公開する方法が必要です。メッセージは耐久性/持続性があり、3 つの優先度 (高、中、低) に分類されている必要があります。サブスクライバーの 1 つは限られた負荷しか処理できず、一部のメッセージはより重要です。最初に処理される優先度の高いメッセージなど

Rebus でそれを行うにはどうすればよいですか? サブスクライバーごとに 3 つのキューが必要だと思いますか?

永続キューと MSMQ を使用したパブリッシュ/サブスクライブの例はどこにありますか?

4

1 に答える 1

3

まず、いくつかの情報: Rebus は、永続的なキュー、永続的なメッセージング、および保証された配信を使用することを好みます。実際、オプトアウトするために積極的に行動しない限り、それがすべての仕組みです。したがって、パブ/サブを Rebus で動作させることができれば、耐久性があります:)

定義によると、発行は「不明な数のサブスクライバー」で機能します。少なくとも、これはバスの問題であり、アプリケーションの問題ではありません。

実際には、サブスクライバーは (サブスクリプション要求と見なすことができる) を発行することによって pub/sub 会話を開始しSubscriptionMessage、続いてパブリッシャーがいくつかのイベントを発行します (これは「サブスクリプション応答」と見なすことができます)。パブリッシャーの「バス パート」は、特定のイベント タイプに誰がサブスクライブしたかを追跡します。

ここまでは順調ですね。

優先順位に関しては、Rebus でそれを達成するためのすぐに使える方法はありません。特定のメッセージ タイプで最大のレイテンシを確保する 1 つの方法は、提案されているように、優先度の低いメッセージによって入力キューが詰まらない別のエンドポイントを作成することです。

ただし、Rebus の構成方法には、各プロセスに 1 つの入力キューのみを含めることを強く推奨するものがあります。そのため、これらの優先度の高いメッセージ タイプにサブスクライブする別のプロセスを作成する必要があることを示唆している可能性があります。

MSMQ がメッセージのある種の優先度をサポートしていることは知っているので、特定のヘッダーを理解することでサポートできるMsmqMessageQueueと思います(速達配信と受信時間の実装方法と同様 -ここを参照) - プル リクエストは喜んで受け入れられます強くお勧めします:)

于 2013-03-11T18:55:26.927 に答える