为什么我的驼峰路线尝试回复JMS消费者?
我在Spring中配置了一个apachecamel路由,它从JMS(ActiveMQ)队列获取消息,转换消息,并使用CXF组件将结果发送到web服务。这一切都很好,但我总是在路由结束时抛出一个异常,即CXF响应对象不可同步,这是指它试图将exchange/消息体转换回JMS消息。但是为什么呢 以下是我的骆驼上下文摘录:-为什么我的驼峰路线尝试回复JMS消费者?,jms,cxf,apache-camel,activemq,Jms,Cxf,Apache Camel,Activemq,我在Spring中配置了一个apachecamel路由,它从JMS(ActiveMQ)队列获取消息,转换消息,并使用CXF组件将结果发送到web服务。这一切都很好,但我总是在路由结束时抛出一个异常,即CXF响应对象不可同步,这是指它试图将exchange/消息体转换回JMS消息。但是为什么呢 以下是我的骆驼上下文摘录:- <route> <from uri="jms:queue:transactions" /> <process ref="convertTo
<route>
<from uri="jms:queue:transactions" />
<process ref="convertToFormatForCXF" />
<to uri="cxf:bean:myService?defaultOperationName=process" />
<stop />
</route>
即使是也不能阻止堆栈跟踪。现在我发现,如果我将disableReplyTo=true添加到JMS使用者,那么stacktrace不会显示哪个是优秀的
我想我只是想弄清楚发生了什么?是否将CXF响应对象添加到“事务”JMS队列?我的意图是,一旦CXF生产商完成,流程就会停止
有人能帮我理解吗?Camel文档对此没有多大帮助
是否将CXF响应对象添加到“事务”JMS队列
不会。它会被添加到临时队列中
从
JmsProducer检测InOut并提供带有要使用的应答目标的JMSReplyTo头。默认情况下,Camel使用临时队列,但您可以使用端点上的replyTo选项指定固定回复队列(请参阅下面关于固定回复队列的更多信息)。
Camel将自动设置侦听回复队列的使用者,因此您不应执行任何操作
EndpointMessageListener WARN Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - java.lang.RuntimeException: net.sophis.soa.dataexchange.LogoutResponse]
org.apache.camel.RuntimeCamelException: java.lang.RuntimeException: net.sophis.soa.dataexchange.LogoutResponse
at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1363)
at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:124)