定期轮询Apache Camel中的外部Web服务

时间:2013-07-07 08:37:40

标签: apache-camel

我正在评估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服务,或者至少如何解决此错误。

1 个答案:

答案 0 :(得分:0)

我发现的是,camel中的异常将隐藏在“Message body is null”下,但问题可能会有很大不同,并且您看到的堆栈跟踪都不会导致您遇到原始问题。我必须逐步跟踪代码,以找出最初的问题是我错过了一个依赖项。

底线是:上面的代码应该可以正常工作。如果您看到“消息正文为空”异常,则问题通常出现在不同的层中。