JMS:消息选择器中的模数运算符

时间:2010-09-23 15:15:09

标签: java jms tibco-ems

我想使用消息选择器来平衡JMS消息。

邮件的属性为“EntitiyIX”。

选择器应如下:

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

在JMS消息选择器中计算模数的运算符是什么?

谢谢, 亚历

4 个答案:

答案 0 :(得分:1)

根据API(http://download.oracle.com/javaee/1.4/api/javax/jms/Message.html - 向下滚动到“消息选择器”),没有模数运算符。

@Robin建议听起来没错。

答案 1 :(得分:0)

假设属性是整数,那么我相信你可以做到

  • (EntityIX / 2)=((EntityIX + 1)/ 2) - >路线到A
  • (EntityIX / 2)!=((EntityIX + 1)/ 2) - >路线到B

答案 2 :(得分:0)

如果您想使用两个以上的消费者,请尝试以下方法:

Content Enricher放在消息使用者面前。让Content Enricher计算一个范围从0到1的哈希值。选择一个简单且可预测的哈希函数。对于订单号,您可以将数字的最后两位数除以100.将该哈希值保存在消息中,假设在属性X中。

然后,您将使用以下消息选择器配置三个消息使用者:“X< 1/3”,“1/3< = X和X< 2/3”,“2/3< = X ”。

如果允许更改邮件发件人,请在发送邮件之前添加该属性。在这种情况下,内容丰富是多余的。

答案 3 :(得分:0)

value=2或任何整数

EntityIX-((EntityIX/value)*value)=0->通往A

EntityIX-((EntityIX/value)*value)<>0->前往B