Apache camel Camel IBM-MQ对主题的持久订阅

Apache camel Camel IBM-MQ对主题的持久订阅,apache-camel,ibm-mq,spring-jms,Apache Camel,Ibm Mq,Spring Jms,使用Camel 2.19.3 我想阅读一个主题(IBM-MQ)。我给两个都定了一个 “durableSubscriptionName”和客户端ID from ("jms:topic:TEST/TOPIC1?durableSubscriptionName=TestSubscription1&clientId=101021&exchangePattern=InOnly") 但是,DefaultJmsMessageContainerFactory给了我一个错误: JMWCC0101:

使用Camel 2.19.3

我想阅读一个主题(IBM-MQ)。我给两个都定了一个 “durableSubscriptionName”和客户端ID

from ("jms:topic:TEST/TOPIC1?durableSubscriptionName=TestSubscription1&clientId=101021&exchangePattern=InOnly")
但是,DefaultJmsMessageContainerFactory给了我一个错误:

JMWCC0101: The clientID cannot be null 
我已经直接使用SpringJMSTemplate尝试了相同的配置,并且 在连接上设置clientId,这就行了

是否需要指定自定义“connectionFactory”?查看 DefaultJmsMessageContainerFactory,看起来它应该处理设置 将clientID添加到基础连接


关于我应该找什么有什么想法吗

对我们有效的方法是将客户机id分配给连接工厂,而不是分配给Camel JMS组件,也不是分配给特定的使用者。在我们的用例中,这种粒度级别是我们所需要的

由于我们使用IBM Liberty,我们在server.xml中添加了一个属性,但是可能还有其他方法来完成同样的事情

<jmsConnectionFactory ..... >
    <properties.wmqJms ... clientId="99999"  ... />
</jmsConnectionFactory>


是否值得在url中使用clientID=101021而不是clientID?这似乎没有什么区别。不过,感谢您的建议。我收到以下错误:
“com.ibm.msg.client.jms.detailedValidClient异常:JMSCC0111:ibm MQ jms类试图在连接或JMSCContext上设置预先存在的客户端ID。”
知道如何解决此问题吗?。我添加了mqConnectionFactory.setClientID(applicationUniqueName)您是否有两个或多个实例尝试订阅主题,并且它们使用相同的客户端ID?或者将其设置为零?是的。在我的spring boot应用程序中,有两个订阅者正在收听两个不同的主题。我是否也应该对两个订阅者的两个驼峰URI使用clientId=“someUniqueName”属性。目前,我只在订阅服务器的两个驼峰URI中使用durableSubscriptionName=“someUniqueName”。如果订阅名称是唯一的,那么应该不需要超出此范围。检查您是否需要设置“com.ibm.mq.jms.SupportMQExtensions”,您能否指导我如何在spring引导应用程序中设置“com.ibm.mq.jms.SupportMQExtensions”属性?我使用的是mq jms spring引导启动器依赖项和MQConnectionFactory,而不是JMSConnectionFactory。我应该将它作为“com.ibm.mq.jms.SupportMQExtensions:true”放在application.yml文件中吗?我尝试过,但这不起作用。我尝试过,但仍在努力在应用程序配置级别设置此属性。谢谢