2

メッセージセレクタを使用してJMSメッセージの負荷を分散したい。

メッセージには「EntitiyIX」プロパティがあります。

セレクターは次のようになります。

"EntitiyIX Modulus 2 == 0" ==> route to queue A
"EntitiyIX Modulus 2 != 0" ==> route to queue B

JMSメッセージセレクターでモジュラスを計算する演算子は何ですか?

ありがとう、アレックス

4

4 に答える 4

1

API(http://download.oracle.com/javaee/1.4/api/javax/jms/Message.html-「メッセージセレクター」までスクロールダウン)によると、剰余演算子はありません。

@Robinが提案したことは正しいと思います。

于 2010-09-24T06:06:10.127 に答える
0

3つ以上のコンシューマーを使用する場合は、次のことを試してください。

メッセージコンシューマーの前にコンテンツエンリッチャーを配置します。Content Enricherに、0から1の範囲のハッシュ値を計算させます。シンプルで予測可能なハッシュ関数を選択してください。注文番号の場合、番号の下2桁を100で割ることができます。そのハッシュ値をメッセージに保存します。たとえば、プロパティXに保存します。

次に、「X <1/3」、「1/3 <=XおよびX<2/3」、「2/3<=X」のメッセージセレクターを使用して3つのメッセージコンシューマーを構成します。

メッセージの送信者を変更できる場合は、メッセージを送信する前にプロパティを追加してください。この場合、コンテンツエンリッチャーは冗長です。

于 2012-11-13T14:52:51.203 に答える
0

プロパティが整数であると仮定すると、私はあなたができると信じています

  • (EntityIX / 2)=((EntityIX + 1)/ 2)->Aへのルート
  • (EntityIX / 2)!=((EntityIX + 1)/ 2)->Bへのルート
于 2010-09-23T16:20:13.480 に答える
0

value=2または任意の整数

EntityIX-((EntityIX/value)*value)=0->Aへのルート

EntityIX-((EntityIX/value)*value)<>0->Bへのルート

于 2018-07-11T07:05:15.217 に答える