2012-04-09 7 views
2

Windows Azureサービスバス(トピック&キュー)を使い始めたばかりで、私は競合 - 消費者メッセージングパターンを実装しようとしています。Azureサービスバスのコンシューマーメッセージングパターン

は基本的に、私はメッセージプロデューサーのセットとメッセージ消費者のセットを持っていると思います。メッセージが生成されると、最初に利用可能なコンシューマーがメッセージを処理します。他の消費者はメッセージを受け取るべきではない。

Azureの中でこれを行う方法はありますか?

+0

各メッセージの背後にはどのような種類の作業がありますか?あなたの時間制約は何ですか? –

+0

@Simon理想的には、消費者は、メッセージが生成された時間の10-30ms以内にメッセージの処理を開始することになります。プロデューサが消費者を凌駕している場合は、需要を満たすために消費者を追加します。 – JoeGeeky

答えて

2

あなたはおそらくその後、トピックをしたいのではなく、Brokered Messagingません。

メッセージのLabelおよび/またはContent TypeプロパティとPeekLock受信モードを使用して、Brokered Messagingのトピック機能をエミュレートできます。

+0

これは、単にキューを作成するということですか? ReceiveModeを適切に設定する。すべての消費者を同じキューにバインドしますか?あれは正しいですか? – JoeGeeky

+1

はい、正しいです。 PeekLockメソッドを使用する場合は、受信者が応答したいメッセージの種類であるかどうかを確認するために、LabelまたはContentTypeを調べることができます。そうであれば、メッセージの.Complete()を呼び出し、そうでなければ.Abandon()を呼び出します。放棄され、ショートロックが失効すると、キューの他のコンシューマがメッセージを処理できます。完了したら、キューから永久に削除されます。 – Zack

1

トピックは、ブローカ経由のメッセージングの機能ですが、1対多の「パブリッシュ/サブスクライブ」のパターンです。キューは、1対1のメッセージ通信です。だから、単純にキューを使用するように思えます。また、http://msdn.microsoft.com/en-us/library/hh689723(VS.103).aspxを参照してください。

+0

キューは、メッセージが1つの受信者に配信されるという意味で、1対1のメッセージ通信です。ただし、同じキューで複数の受信者が同時にリッスンすることを避けて、言及したシナリオを有効にすることはできません。 –

3

シンプル。ただ1つのキューから同時に受信する2つ(またはそれ以上)の受信者を作成すると、完了です。メッセージが取られると、メッセージログ上のカーソルが前進するので、取り出されたメッセージはいずれも受信者のうちの1つに送られます。競合するコンシューマは、ネットワークキューの固有の機能であるため、実際には特別なものは必要ありません。

あなたが反対を必要とする場合 - 各メッセージは、各消費者に行く - あなたはあなたの他の受信機から独立して移動することができ、メッセージログの上に孤立cusorを与える消費者ごとsubscrioptionを作ります。キックのために、あなたは明らかにサブスクリプションで競合する消費者を持つことができます。

クレメンス

+0

わかりません契約で競合するコンシューマーをどのように持つことができるかを見ています。これはフィルタを使用して行われますか?あなたはもう少し説明したり、より多くの情報を指摘できますか? –

関連する問題