Apache camel 驼峰-处理不可恢复的错误
我正在研究Camel并专注于错误处理 对于无法恢复的错误(那些无法通过重试修复的错误),Camel In Action建议您应该使用Apache camel 驼峰-处理不可恢复的错误,apache-camel,Apache Camel,我正在研究Camel并专注于错误处理 对于无法恢复的错误(那些无法通过重试修复的错误),Camel In Action建议您应该使用exchange.getOut().setFault(true)和exchange.getOut().setBody(“错误发生”) 实际处理这些错误的最佳方法是什么?现在我想有两种方法: 在路由或上下文上使用handleFaults(true),然后像处理任何其他错误一样进行处理 如果使用请求-应答模式,原始消息发送者可以处理它 1对我来说是直截了当的(除此之外,
exchange.getOut().setFault(true)
和exchange.getOut().setBody(“错误发生”)
实际处理这些错误的最佳方法是什么?现在我想有两种方法:
handleFaults(true)
,然后像处理任何其他错误一样进行处理// error occurred
exchange.getOut().setFault(true);
exchange.getOut().setBody(new Exception(“error”));
在发送方中(jms示例使用QueueRequestor进行请求回复):
这似乎是对原始发件人的大量工作。有更好的处理方法吗?Camel可以在ErrorHandler的帮助下很好地处理异常,这意味着您的Camel路线不需要做很多事情。 但是对于错误消息,它是应用程序级消息的一部分,Camel ErrorHandler不想碰它,所以开发人员应该考虑如何处理它
responseMessage = qRequestor.request(msg);
if(responseMessage instanceof ObjectMessage && ((ObjectMessage)responseMessage).getObject() instanceof Exception) {
// AN ERROR OCCURRED IN ROUTE
} else {
// NORMAL PROCESSING OF MESSAGE
}