持久订阅消费者不能同时消费超过1条消息吗?

时间:2012-04-03 15:58:40

标签: spring jms spring-jms

Spring Message Listener Container doc说:

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jms/listener/AbstractMessageListenerContainer.html#setDurableSubscriptionName%28java.lang.String%29

  

持久订阅名称在此客户端中必须是唯一的   JMS客户端ID。默认值是指定消息的类名   监听器。注意:只有1个并发使用者(默认值为   每个持久性允许此消息侦听器容器)   订阅。

我想,我们可以同时处理并发消息。我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

是的,文档是正确的。在任何时候,只有一个消费者接收持久订阅的消息。所有持久订阅都由唯一ID标识。如果一个消费者已经使用id接收消息,则另一次尝试创建具有该持久预订的相同id的消费者将失败。

答案 1 :(得分:1)

我以前遇到过此问题,我们的日志中充满了警告,抱怨客户端ID已在使用中。

虚拟主题是ActiveMQ的一个选项:这个想法类似于@brainOverflow描述的,它是主题和队列的组合。生产者将消息发送到由队列订阅的主题,每个队列接收消息的副本。

http://activemq.apache.org/virtual-destinations.html