我正在评估Camel在两个解耦系统之间创建集成。我需要Camel定期轮询Web服务以获取项目列表,对收到的项目进行一些转换,然后使用不同的传输将其发送到第二个系统。
我尝试了以下方法:
<route id="timer">
<from uri="timer://myTimer?period=5000"/>
<to uri="direct:queryWS"/>
</route>
<route id="ws">
<from uri="direct:queryWS"/>
<to uri="log:Querying WS"/>
<process ref="itemRetriever" />
</route>
其中itemRetriever是我之前设置的bean,它实现了org.apache.camel.Processor并使用Axis进行Web服务调用。但是,当消息到达第二个路由时,Camel会抛出异常,因为消息正文为空。
我想知道是否有更好的方法来定期轮询外部Web服务,或者至少如何解决此错误。
答案 0 :(得分:0)
我发现的是,camel中的异常将隐藏在“Message body is null”下,但问题可能会有很大不同,并且您看到的堆栈跟踪都不会导致您遇到原始问题。我必须逐步跟踪代码,以找出最初的问题是我错过了一个依赖项。
底线是:上面的代码应该可以正常工作。如果您看到“消息正文为空”异常,则问题通常出现在不同的层中。