【发布时间】:2014-08-11 10:24:36
【问题描述】:
我在 Spring 中配置了一个 Apache Camel 路由,它从 JMS (ActiveMQ) 队列中获取消息,转换消息并使用 CXF 组件将结果发送到 Web 服务。这一切都很好,但我总是在路由结束时抛出一个异常,即 CXF 响应对象不可同步,指的是它试图将交换/消息正文转换回 JMS 消息这一事实。但为什么呢?
这是我的骆驼上下文摘录:-
<route>
<from uri="jms:queue:transactions" />
<process ref="convertToFormatForCXF" />
<to uri="cxf:bean:myService?defaultOperationName=process" />
<stop />
</route>
这是来自日志的 sn-p:-
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)
即使 也不会阻止堆栈跟踪。现在我发现如果我将 disableReplyTo=true 添加到 JMS 使用者,那么堆栈跟踪不会显示哪个是优秀的。
我想我只是想弄清楚发生了什么? CXF 响应对象是否将被添加到“事务”JMS 队列中?我的意图是在 CXF 生产者完成后停止流程。
谁能帮助我理解? Camel 文档对此没有太大帮助。
【问题讨论】:
标签: jms cxf apache-camel activemq