Camel-JMS共享持久订阅subscriptionName点号转义问题咨询
ActiveMQ Artemis中Camel共享持久订阅队列名称转义问题
环境版本
- Apache Artemis: 2.31.2
- Spring-boot : 2.7.18
- Apache Camel: 3.22.0
问题背景与配置
已从ActiveMQ Classic VirtualTopics迁移到ActiveMQ Artemis,broker配置如下:
<address name="VirtualTopic.ccncsi.fromEurope"> <multicast> <queue name="Consumer.dispatcher.VirtualTopic.ccncsi.fromEurope"/> <queue name="Consumer.ccncsiaudit.VirtualTopic.ccncsi.fromEurope"/> <queue name="Consumer.ccncsigateway.VirtualTopic.ccncsi.fromEurope"/> </multicast> </address>
尝试用Camel JMS端点连接地址VirtualTopic.ccncsi.fromEurope,配置共享持久订阅,端点地址为:
jms:topic:VirtualTopic.ccncsi.fromEurope?subscriptionName=Consumer.dispatcher.VirtualTopic.ccncsi.fromEurope&subscriptionDurable=true&subscriptionShared=true
问题现象
路由部署并获得权限后,端点会在对应地址下自动创建新队列,队列名称中的点号被转义为Consumer\.dispatcher\.VirtualTopic\.ccncsi\.fromEurope,与broker配置中预定义的Consumer.dispatcher.VirtualTopic.ccncsi.fromEurope队列并存。
旧客户端依赖原有队列名称通过WebLogic和Openwire协议连接,因此必须保留原有队列名称。

当前消费者实际连接到转义后的队列,但期望从预定义的未转义队列消费消息。
跟踪细节
排查发现,调用org.apache.activemq.artemis.core.protocol.core.ServerSessionPacketHandler#session.createSharedQueue(request.toQueueConfiguration());时,请求(org.apache.activemq.artemis.core.protocol.core.Packet)转换为QueueConfiguration后,队列名称中的点号已经被转义。
提问
这是正常行为吗?
内容的提问来源于stack exchange,提问作者Themikebe
相关产品推荐
相关产品推荐

