JMS 2.0持久订阅主题Kubernetes中的最佳实践

JMS 2.0持久订阅主题Kubernetes中的最佳实践,kubernetes,jms,mule,activemq-artemis,amq,Kubernetes,Jms,Mule,Activemq Artemis,Amq,我们正在创建一个Mule应用程序,该应用程序将在Kubernetes上的容器中运行,并且将位于一个副本集中,该副本集将连接到JMS 2.0 Red Hat AMQ 7(基于ActiveMQ Artemis) 已将pom.xml配置为获取jms客户端: org.apache.activemq artemis jms客户端所有 2.10.1 JMS配置配置为: 然后在JMS侦听器组件中: 变量设置为: mq.client.id=client-id-135a9514-d4d5-4f52-b

我们正在创建一个Mule应用程序,该应用程序将在Kubernetes上的容器中运行,并且将位于一个副本集中,该副本集将连接到JMS 2.0 Red Hat AMQ 7(基于ActiveMQ Artemis)

已将pom.xml配置为获取jms客户端:


org.apache.activemq
artemis jms客户端所有
2.10.1
JMS配置配置为:


然后在JMS侦听器组件中:


变量设置为:

mq.client.id=client-id-135a9514-d4d5-4f52-b01c-f6ca34a76b40
mq.sub.name=my-sub
mq.incoming.queue=my-queue
这是配置客户端的最佳方法吗?正如我们在部署到K8s时看到的日志中关于AMQ服务器连接的错误:

javax.jms.InvalidClientIDException: client-id-135a9514-d4d5-4f52-b01c-f6ca34a76b40 was already set into another connection 
在JMS 2.0中,创建共享持久订阅时不必设置客户端标识符。但是,如果确实设置了客户端标识符,则每个连接的客户端标识符必须是唯一的。无论出于何种原因(例如,由于Mule或K8s),正在创建多个连接,并且由于每个连接都使用相同的客户端标识符,因此您将收到
javax.jms.invalidClientIndexception

从配置中删除
clientId=“${mq.client.id}”
,然后
javax.jms.invalidClientIndexception
应该消失。

在jms 2.0中,创建共享持久订阅时不必设置客户端标识符。但是,如果确实设置了客户端标识符,则每个连接的客户端标识符必须是唯一的。无论出于何种原因(例如,由于Mule或K8s),正在创建多个连接,并且由于每个连接都使用相同的客户端标识符,因此您将收到
javax.jms.invalidClientIndexception


删除
clientId=“${mq.client.id}”
从您的配置和
javax.jms.InvalidClientIndexception
应该消失。

我们看到的错误是:javax.jms.InvalidClientIndexception:client-id-135a9514-d4d5-4f52-b01c-f6ca34a76b40已设置到另一个连接中。我们看到的错误是:javax.jms.InvalidClientIndexception:client-id-135a9514-d4d5-4f52-b01c-f6ca34a76b40已被设置到另一个连接中Tanks Justin,我们已删除客户端id。我们也看到一些其他错误-有时使用选择器,有时错误表示主题已与子名称一起使用-我将尝试重新创建。感谢Justin,我们已经删除了客户端id。我们也看到了一些其他错误-有时是选择器错误,有时是主题已与子名称一起使用-我将尝试重新创建。