0
我正在駱駝工作,並側重於錯誤處理。駱駝 - 處理不可恢復的錯誤
對於不可修復的錯誤(那些不會被重試修復的錯誤),Camel In Action說您應該使用exchange.getOut().setFault(true)
和exchange.getOut().setBody("Error Occurred")
。
實際處理這些錯誤的最佳方法是什麼?現在,我想有兩個方面:
- 路線或上下文然後處理像任何其他錯誤
- 原始發件人可以處理它的使用
handleFaults(true)
如果使用請求回覆模式
1對我來說很簡單(除了那個時候,不妨使用Exceptions/Recoverable?)。 2有點棘手 - 我不確定原始發件人如何知道他們收到的郵件是錯誤的(與預期的返回郵件相比)。
我在想什麼可能發生的情況是這樣使用異常,表明它是一個錯誤:
在路線:
// error occurred
exchange.getOut().setFault(true);
exchange.getOut().setBody(new Exception(「error」));
在發送者(使用QueueRequestor JMS例如,對於請求回覆):
responseMessage = qRequestor.request(msg);
if(responseMessage instanceof ObjectMessage && ((ObjectMessage)responseMessage).getObject() instanceof Exception) {
// AN ERROR OCCURRED IN ROUTE
} else {
// NORMAL PROCESSING OF MESSAGE
}
這看起來像很多原始發件人的工作。有沒有更好的方法來處理這個問題?