1

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

4

1 回答 1

0

从那以后我发现,骆驼中的异常将隐藏在“消息正文为空”下,但问题可能完全不同,您看到的任何堆栈跟踪都不会导致您遇到原始问题。我不得不一步一步地跟踪代码,以发现最初的问题是我缺少一个依赖项。

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

于 2013-07-18T11:24:33.270 回答