forceCompletionOnStop和completeAllOnStop之间有什么区别?是否可能或建议同时使用两个?
从文档中:
forceCompletionOnStop 指示在上下文停止时完成所有当前聚合的交换
completeAllOnStop 指示在上下文停止时等待完成所有当前和部分(待处理)的聚合交换。这也意味着我们将等待聚合存储库中存储的所有挂起的交换完成,以便在存储库为空之前停止。当使用仅基于内存的基于内存的聚合存储库,并且不将数据存储在磁盘上时,您可能希望启用此功能。启用此选项后,在停止CamelContext或使用它的路由时,聚合器将在停止之前等待完成所有这些交换。
这对我来说似乎有点困惑
答案 0 :(得分:1)
completeAllOnStop
是一个“正常”的完成标准。骆驼聚合器实现了ShutdownAware
接口,completeAllOnStop
标准向骆驼上下文表明,聚合器需要关闭前需要花费更多时间以完成其聚合。
forceCompletionOnStop
尝试在关闭过程中完成所有聚合(prepareShutdown
)。
在我看来,它们看起来也非常相似,两者都试图在关闭Camel上下文之前完成所有聚合。我建议使用 completeAllOnStop
,因为这似乎是更主动的方法。另请参见Camel Docs for more info about the shutdown strategy。
我不知道是否同时配置了它们:-)
请注意,如果关闭是强制关闭,则甚至会跳过甚至
forceCompletionOnStop
!在这种情况下,骆驼尝试尽快关闭。 据我所知,骆驼会在超时时间内无法正常关闭时强制关闭。