Apache camel 当大量消息连续失败时挂起骆驼消费者

Apache camel 当大量消息连续失败时挂起骆驼消费者,apache-camel,Apache Camel,我想根据最后消息的处理结果暂停骆驼卡夫卡消费者(即路线)。例如,当最后完成的10条消息因相同的错误而失败时,我想暂停使用消息,而不是向错误主题发送数千条消息 我发现like可以通过访问机上存储库来根据当前的机上交换暂停路由 因此,我的问题归结为:是否有一个工具来回顾一条路线的最后一条n完成的消息?我认为这将使我能够为我的案件实施一个路由策略 或者,如果没有,我可以通过在RoutePolicy的一个实例字段中构建最近几次交换的处理摘要的集合来构建这个工具吗 谢谢你的提示。是的,没有内置的路线策略。

我想根据最后消息的处理结果暂停骆驼卡夫卡消费者(即路线)。例如,当最后完成的10条消息因相同的错误而失败时,我想暂停使用消息,而不是向错误主题发送数千条消息

我发现like可以通过访问机上存储库来根据当前的机上交换暂停路由

因此,我的问题归结为:是否有一个工具来回顾一条路线的最后一条
n
完成的消息?我认为这将使我能够为我的案件实施一个路由策略

或者,如果没有,我可以通过在RoutePolicy的一个实例字段中构建最近几次交换的处理摘要的集合来构建这个工具吗


谢谢你的提示。

是的,没有内置的路线策略。正如您所说,我们有节流功能,还有类似cron的调度功能

因此,您可以构建自己的,并保留最近N条消息的窗口,跟踪有多少条消息失败,然后在达到该阈值时挂起


注意,再次恢复怎么样?如果是自动的,如5分钟后再试一次。否则,这是一个手动步骤,使消费者再次恢复。

可以将最近几次交换的处理结果保留在RoutePolicy的实例字段中吗?我需要注意线程安全吗?您可以使用RoutePolicyFactory为每个路由创建共享策略或新策略。是的,如果路由有并发使用者,那么您可以在策略中有多个线程。因此,计数器可以是原子的(如果你真的想100%准确),或者基本的int/long原语足够好,如果在一些罕见的高共电流中,你可以得到丢失的更新。