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
}
这看起来像很多原始发件人的工作。有没有更好的方法来处理这个问题?