骆驼聚合器forceCompletionOnStop VS completeAllOnStop

时间:2018-10-25 20:44:26

标签: apache-camel aggregator

forceCompletionOnStop和completeAllOnStop之间有什么区别?是否可能或建议同时使用两个?

从文档中:

  

forceCompletionOnStop 指示在上下文停止时完成所有当前聚合的交换

     

completeAllOnStop 指示在上下文停止时等待完成所有当前和部分(待处理)的聚合交换。这也意味着我们将等待聚合存储库中存储的所有挂起的交换完成,以便在存储库为空之前停止。当使用仅基于内存的基于内存的聚合存储库,并且不将数据存储在磁盘上时,您可能希望启用此功能。启用此选项后,在停止CamelContext或使用它的路由时,聚合器将在停止之前等待完成所有这些交换。

这对我来说似乎有点困惑

1 个答案:

答案 0 :(得分:1)

completeAllOnStop 是一个“正常”的完成标准。骆驼聚合器实现了ShutdownAware接口,completeAllOnStop标准向骆驼上下文表明,聚合器需要关闭前需要花费更多时间以完成其聚合。

另一方面,

forceCompletionOnStop 尝试在关闭过程中完成所有聚合prepareShutdown)。

在我看来,它们看起来也非常相似,两者都试图在关闭Camel上下文之前完成所有聚合。我建议使用 completeAllOnStop ,因为这似乎是更主动的方法。另请参见Camel Docs for more info about the shutdown strategy

我不知道是否同时配置了它们:-)

  

请注意,如果关闭是强制关闭,则甚至会跳过甚至forceCompletionOnStop !在这种情况下,骆驼尝试尽快关闭。   据我所知,骆驼会在超时时间内无法正常关闭时强制关闭。