我正在与尝试使用IBM Websphere MQ中的JMS队列实现负载平衡行为的人一起工作。因此,他们将多个Camel JMS使用者配置为从同一个队列读取数据。尽管根据JMS规范(我上次无论如何看)这种行为是未定义的,但他们期望一种循环/负载平衡行为。而且,虽然规范没有定义,但我认为Websphere MQ的正常行为是仅向其中一个消费者传递消息,并且它可能会执行某种类型的负载平衡。请看这里,例如:When multi MessageConsumer connect to same queue(Websphere MQ),how to load balance message-consumer?同一Websphere MQ JMS队列上的两个消费者都收到相同的消息
但是在这种特殊情况下,看起来都是消费者正在接收相同的消息。
任何更擅长Websphere MQ的人都会对此有所了解吗?有什么情况会出现这种行为?是否有任何配置更改可以缓解此问题?
我倾向于告诉每个人在这里使用本地Websphere MQ集群设施,并避免让多个消费者指向相同的队列,但这对他们来说将是一个重大改变,所以我很想发现一种方法来完成这项工作。
不是我依赖任何未定义的东西,但是如果他们愿意依赖于IBM的特定行为,我会留给他们。
Thanks T.Rob。多年来我没有看过实际的规范,但我曾经想过,当队列中有多个消费者(而不是一个主题)时,行为完全未定义。但是也许“从来没有提供确认消息的第二个副本”规定胜过了这一点。 – mindcrime
这是未定义的竞争消费者之间的投递顺序。消息的传递也受到QOS设置的影响。如果应用程序指定了懒惰确认,那么它可能会受骗。但是,如果邮件排队等待并且未回滚或发生异常,那么您只能进行一次和一次交付。 –