Java jms队列上具有多个侦听器的接收行为

Java jms队列上具有多个侦听器的接收行为,java,jms,spring-jms,Java,Jms,Spring Jms,如果队列上有多个侦听器,每个java进程都包含一个侦听器,那么当消息到达队列时,接收模式是什么。将: 1) 每个侦听器轮流接收消息。ie消息1发送给Listener1,消息2发送给listener2,依此类推 或 2) 这可能是随机接收 或 3) 它可能依赖于JMS实现 我使用Spring DMLC来接收消息。它完全不确定-它取决于许多事情 经纪人 侦听器处理消息所需的时间 预取设置 等等等等 它可能从循环开始,但很快就会变得随机(不是真正的随机-可预测-代理通常会将下一条消息发送给完成前一

如果队列上有多个侦听器,每个java进程都包含一个侦听器,那么当消息到达队列时,接收模式是什么。将:

1) 每个侦听器轮流接收消息。ie消息1发送给Listener1,消息2发送给listener2,依此类推

2) 这可能是随机接收

3) 它可能依赖于JMS实现


我使用Spring DMLC来接收消息。

它完全不确定-它取决于许多事情

  • 经纪人
  • 侦听器处理消息所需的时间
  • 预取设置
  • 等等等等

它可能从循环开始,但很快就会变得随机(不是真正的随机-可预测-代理通常会将下一条消息发送给完成前一条消息处理的第一个消费者)。

因为一条消息只会被一个消费者消费,第一个完成前一条消息处理的消费者是什么意思?假设队列中有4条消息和3个消费者。他们每人将收到一条信息;第四个将发送给首先完成的使用者(除非配置了预回迁,在这种情况下,预回迁将已发送给其中一个使用者并在本地排队)。每个容器中还可以有多个使用者(并发);经纪人将每个人视为一个离散的消费者——他们对DMLC一无所知。