2011-08-11 6 views
2

私たちは、システムで実行中の他のプロセスにメッセージを公開するためにNServiceBusを既に使用するプロセスを持っています。このプロセスに追加の機能を追加して、他のプロセスにメッセージを公開する必要がありますが、新しいタイプのメッセージで別のキューに書き込むことができるようにしたいと考えています。優先順位が異なるので、同じキューにメッセージを混在させたくないのが望ましいです。私が見てきたことは、NServiceBusがプロセスごとに1つのキューしかサポートしていないことを示しています。これは正しいです?NServiceBus:1つ以上のキューに発行するプロセスのための要件

これがそうなら、誰でも良い回避策を提案できますか?私が考えることができるのは、新しいキューを別の "NServiceBus Hub"プロセスに格納してから、WCFインテグレーション機能を使用して新しいメッセージのプロセス間プロセスをプロセスからハブに中継して新しいキューに挿入することです。

ありがとうございました。

答えて

1

高優先度メッセージと低優先度メッセージを1つのキューに混在させることについての懸念があります。

これは、送信側と受信側の両方で処理する必要があります。

送信者は、それ自身の単一のキューにローカルに書き込むことはありません。受信者にメッセージを送信する場合、送信者はその受信者に固有の一時的なローカルキューに書き込みます。

だから、二つの潜在的な問題を抱えて:

  1. 同じキューからの高優先度の低いメッセージを処理する受信機を。
  2. 送信者が優先度の高いメッセージと低いメッセージの両方を送信しています。

これは、1つまたは両方を行うことができそうである場合は、次の2つのサービス、優先度の高い処理用と低優先度に1つに分離

  1. レシーバサービスが。
  2. 優先度の高い処理を独自のNServiceBusパブリッシャーサービスに分割することもできます。

これにより、複数のエンドポイントが優先的に分離されます。

+0

ヒュー、応答に感謝します。私はあなたが何を示唆しているのか理解しようとしています。とにかく私の問題は受信者(加入者)ではありません。この問題は、優先順位の高いメッセージと低いメッセージの両方を生成する(分離できない)送信者(パブリッシャ)アプリケーションです。パブリッシャキューを別々のサービスに置くことはできますが、アプリケーションとパブリッシャサービスの間でどのように通信しますか? WCF? – jacko

+0

問題はキューイングではないので、優先度の高いメッセージと低いメッセージを同じサービスに結合しているということです。サブスクライバが両方のメッセージタイプに登録されていない場合、唯一の問題は、パブリッシャが優先度の低いものをパブリッシュするCPUサイクルを使い切ることだけです。公開は、サブスクリプションの評価とMSMQ経由の送信です。 MSMQは、各サブスクライバに対して、メッセージを送信するために別個のローカルキューが作成されることを保証します。したがって、メッセージの優先順位付けを行う場合は、パブリッシャを複数のサービスに分割する必要があります。 –

関連する問題