Spring Message Listener Container doc说:
持久订阅名称在此客户端的JMS客户端ID中必须是唯一的。 Default是指定消息侦听器的类名。注意:每个持久订阅只允许1个并发使用者(这是此消息侦听器容器的默认值)。
我想,我们可以同时处理并发消息。我错过了什么吗?
是的,文档是正确的。在任何时候,只有一个消费者接收持久订阅的消息。所有持久订阅都由唯一ID标识。如果一个消费者已经使用id接收消息,则另一次尝试创建具有该持久预订的相同id的消费者将失败。
我之前遇到过这个问题,我们的日志充满警告,抱怨客户端ID已经在使用中。
Virtual Topic是ActiveMQ的一个选项:这个想法类似于@brainOverflow所描述的,它是主题和队列的组合。生产者将消息发送到由队列订阅的主题,并且每个队列接收消息的副本。