JMSReplyTo:如何为VM/Artemis/IBM MQ创建通用Camel路由
JMSReplyTo配置问题(对接嵌入式/独立版ActiveMQ Artemis及IBM MQ)
技术栈
- Spring Boot 2.5.13
- Camel 3.18.0
- JMS
- 对接目标:嵌入式ActiveMQ Artemis、独立版ActiveMQ Artemis、IBM MQ
目前已实现三者的运行与连接,但在JMSReplyTo配置上遇到以下问题:
正常场景:本地嵌入式Broker
运行无问题,可发送消息至请求队列,并将响应发送至指定的JMSReplyTo队列,代码示例如下:
public void sendRequest(){ ActiveMQQueue activeMQQueue = new ActiveMQQueue("RESPONSE_QUEUE"); jmsTemplate.convertAndSend("REQUEST_QUEUE", "Hello", pp -> { pp.setJMSReplyTo(activeMQQueue); return pp; }); }
异常场景:ActiveMQ Artemis控制台操作
通过控制台操作时,接收到的JMSReplyTo对象为ActiveMQDestination类型,导致设置CamelJmsDestination的流程变得复杂。当前使用的Camel代码片段:
.setExchangePattern(ExchangePattern.InOut) .setHeader("CamelJmsDestination", header("JMSReplyTo"))
疑问
- 我是不是在做无用功?
- 是否应该直接获取队列名称手动构造URI?
- 还是我遗漏了某些逻辑,或是Artemis控制台的使用方式有误?
内容的提问来源于stack exchange,提问作者Jack Bourner
相关产品推荐
相关产品推荐

