0
我正在評估駱駝在兩個解耦系統之間創建集成。我需要駱駝定期輪詢Web服務以獲取項目列表,對收到的項目進行一些轉換,並使用不同的傳輸將其發送到第二個系統。定期輪詢Apache 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服務,或至少如何克服這個錯誤。
兩件事情a)你爲什麼需要把它作爲兩條路線。這可能是一個路線,<從「計時器」..>。<到「日誌:」.. <進程... b)你似乎沒有在路線中設置一個身體,我懷疑你正在試圖採取行動處理器中的消息主體。更多的例外細節將有所幫助 – techuser
您能否詳細說明您的問題?你使用的是什麼版本的駱駝,什麼是堆棧跟蹤等 – AlanFoster
最後,這是一個完全不同的問題。似乎Camel正在將異常封裝在其他異常中,因此由缺少的庫引起的「Class def not found」異常顯示爲「消息正文爲空」。我必須在org.apache.camel.impl.DefaultExchange中設置一個斷點來查看真正的問題 – matei