我想使用消息选择器来平衡JMS消息。
邮件的属性为“EntitiyIX”。
选择器应如下:
"EntitiyIX Modulus 2 == 0" ==> route to queue A
"EntitiyIX Modulus 2 != 0" ==> route to queue B
在JMS消息选择器中计算模数的运算符是什么?
谢谢, 亚历
答案 0 :(得分:1)
根据API(http://download.oracle.com/javaee/1.4/api/javax/jms/Message.html - 向下滚动到“消息选择器”),没有模数运算符。
@Robin建议听起来没错。
答案 1 :(得分:0)
假设属性是整数,那么我相信你可以做到
答案 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