Apache camel 如何处理远程代理后面的驼峰拆分器的异常

Apache camel 如何处理远程代理后面的驼峰拆分器的异常,apache-camel,Apache Camel,我已经创建了一个路由,它通过拆分器执行多个查找、聚合响应并返回对象列表 我使用远程代理来调用路由 考虑到路线上有多个分支,可能有些会成功,有些会失败。如何从远程代理获取所有返回的结果,以及故障列表和故障原因 我可以想出3种选择,但希望有更干净的 使用随远程代理调用传入的标头结构来收集错误 在包含结果和错误的结构中包装远程代理的返回值 将错误路由到某个错误端点(但不确定如何与我的请求关联) 还有其他选择吗?我会选择选项3。将所有错误路由到通用错误端点,在那里记录错误并返回一些默认响应。通过这种方式

我已经创建了一个路由,它通过拆分器执行多个查找、聚合响应并返回对象列表

我使用远程代理来调用路由

考虑到路线上有多个分支,可能有些会成功,有些会失败。如何从远程代理获取所有返回的结果,以及故障列表和故障原因

我可以想出3种选择,但希望有更干净的

  • 使用随远程代理调用传入的标头结构来收集错误
  • 在包含结果和错误的结构中包装远程代理的返回值
  • 将错误路由到某个错误端点(但不确定如何与我的请求关联)

  • 还有其他选择吗?

    我会选择选项3。将所有错误路由到通用错误端点,在那里记录错误并返回一些默认响应。通过这种方式,您可以引用所有分支中的通用错误端点,确保它们在遇到错误时都会以相同的方式作出反应。

    我选择选项3。将所有错误路由到通用错误端点,在那里记录错误并返回一些默认响应。通过这种方式,您可以引用所有分支中的通用错误端点,确保它们在遇到错误时都会以相同的方式作出反应。

    您应该能够在聚合策略类中获取异常详细信息,并相应地采取措施


    这取决于您希望从总体设计中实现什么。一般来说,如果您希望远程实践的使用者在出现错误时失败,它应该立即获得异常详细信息。如果您的远程代理是REST端点,它可能返回500个错误。其他协议也可以采用类似的策略。

    您应该能够在聚合策略类中获得异常详细信息,并相应地采取措施


    这取决于您希望从总体设计中实现什么。一般来说,如果您希望远程实践的使用者在出现错误时失败,它应该立即获得异常详细信息。如果您的远程代理是REST端点,它可能返回500个错误。其他协议也可以采用类似的策略。

    谢谢您提供的信息。如何从调用反向代理的类访问信息?我想返回收集的信息,但也要看看哪些路由失败。我真的不明白反向代理是什么?所以请帮我。然而,我可以回答另一个问题——如果您使用聚合策略和拆分器——聚合策略类将从所有拆分路径获得聚合输出。此单一聚合策略类将负责所有聚合。在聚合策略类的每次调用中,u将得到一个newExchange和一个oldExchange。以下是您对正在发生的情况的提示。如果分割路径中存在异常,NewExchAge将具有以下属性“Throwable caused=exchange.getProperty(exchange.exception_Capture,Throwable.class);”。。您可以使用此方法来找出异常消息,并在方法返回的exchange中设置详细信息。现在,在聚合之后,您可以再次检查详细信息,并找出实际发生的异常-或抛出新异常-无论您的要求是什么。提供的信息非常有助于澄清它是如何工作的。我可以从调用camel远程代理的类访问信息吗。方法签名如下@products(url=“direct:collect orders”)public Collection getOrders(Customer-cust)如何查看来自某些来源的订单是否失败?我是否可以从调用远程代理的类访问Exchange?是。。从聚合策略返回的任何在exchange上设置的头都可以通过调用类进行访问。所以您可以简单地在聚合策略中设置适当的头,并通过调用类来访问它们。如果您在调用类时没有交换,您可以简单地读取头并在聚合器组件结束后抛出异常。谢谢您提供的信息。如何从调用反向代理的类访问信息?我想返回收集的信息,但也要看看哪些路由失败。我真的不明白反向代理是什么?所以请帮我。然而,我可以回答另一个问题——如果您使用聚合策略和拆分器——聚合策略类将从所有拆分路径获得聚合输出。此单一聚合策略类将负责所有聚合。在聚合策略类的每次调用中,u将得到一个newExchange和一个oldExchange。以下是您对正在发生的情况的提示。如果分割路径中存在异常,NewExchAge将具有以下属性“Throwable caused=exchange.getProperty(exchange.exception_Capture,Throwable.class);”。。您可以使用此方法来找出异常消息,并在方法返回的exchange中设置详细信息。现在,在聚合之后,您可以再次检查详细信息,并找出实际发生的异常-或抛出新异常-无论您的要求是什么。提供的信息非常有助于澄清它是如何工作的。我可以从调用camel远程代理的类访问信息吗。方法签名如下@products(url=“direct:collect orders”)public Collection getOrders(Customer-cust)如何查看来自某些来源的订单是否失败?我是否可以从调用远程代理的类访问Exchange?是。。从聚合策略返回的任何在exchange上设置的头都可以通过调用类进行访问。所以,您可以简单地在聚合策略中设置适当的头,并通过调用cl来访问它们