メッセージセレクタを使用してJMSメッセージの負荷を分散したい。
メッセージには「EntitiyIX」プロパティがあります。
セレクターは次のようになります。
"EntitiyIX Modulus 2 == 0" ==> route to queue A
"EntitiyIX Modulus 2 != 0" ==> route to queue B
JMSメッセージセレクターでモジュラスを計算する演算子は何ですか?
ありがとう、アレックス
API(http://download.oracle.com/javaee/1.4/api/javax/jms/Message.html-「メッセージセレクター」までスクロールダウン)によると、剰余演算子はありません。
@Robinが提案したことは正しいと思います。
3つ以上のコンシューマーを使用する場合は、次のことを試してください。
メッセージコンシューマーの前にコンテンツエンリッチャーを配置します。Content Enricherに、0から1の範囲のハッシュ値を計算させます。シンプルで予測可能なハッシュ関数を選択してください。注文番号の場合、番号の下2桁を100で割ることができます。そのハッシュ値をメッセージに保存します。たとえば、プロパティXに保存します。
次に、「X <1/3」、「1/3 <=XおよびX<2/3」、「2/3<=X」のメッセージセレクターを使用して3つのメッセージコンシューマーを構成します。
メッセージの送信者を変更できる場合は、メッセージを送信する前にプロパティを追加してください。この場合、コンテンツエンリッチャーは冗長です。
プロパティが整数であると仮定すると、私はあなたができると信じています
value=2
または任意の整数
EntityIX-((EntityIX/value)*value)=0
->Aへのルート
EntityIX-((EntityIX/value)*value)<>0
->Bへのルート