Java 无法为多个主题设置多个ActiveMQ侦听器';设置clientId时,无法在spring启动项目中连接

Java 无法为多个主题设置多个ActiveMQ侦听器';设置clientId时,无法在spring启动项目中连接,java,spring,spring-boot,activemq,spring-boot-starter,Java,Spring,Spring Boot,Activemq,Spring Boot Starter,我使用的是SpringBootStarterActiveMQ 当我尝试使用多个监听器来听一个不同的主题,每个主题都有clientId时,只有一个监听器能够随机连接到一个主题,其余的则不连接,表示已经连接到给定的clientId 下面是属性集 spring.activemq.broker-url=tcp://localhost:61616?jms.clientID=test spring.jms.listener.acknowledge mode=auto spring.jms.listener

我使用的是SpringBootStarterActiveMQ

当我尝试使用多个监听器来听一个不同的主题,每个主题都有clientId时,只有一个监听器能够随机连接到一个主题,其余的则不连接,表示已经连接到给定的clientId

下面是属性集

  • spring.activemq.broker-url=tcp://localhost:61616?jms.clientID=test
  • spring.jms.listener.acknowledge mode=auto
  • spring.jms.listener.concurrency=1

  • spring.jms.pub sub-domain=true

========================================================================

错误消息

无法刷新目标“主题\u 1”的JMS连接-正在重试 使用FixedBackOff{interval=5000,currentAttempts=5, maxAttempts=unlimited}。原因:代理:pdt主题-客户端:测试
已从连接tcp://localhost:61616*

根据JMS规范,不能将多个客户端连接到具有相同客户端ID的代理。如果您只订阅主题而没有持久订阅,那么您不需要客户端ID,但是如果您确实需要持久订阅,那么您的每个客户端都需要有一个唯一的ID才能正常工作

在Spring 3.2.3中,我可以用相同的客户端Id听同一个代理的不同主题,但是当我在Spring boot中尝试相同的内容时,它失败了。这意味着没有设置客户端Id,或者所有订阅者都使用相同的池连接。JMS规范已明确,无法从多个连接中使用相同ID进行连接。