Apache camel 骆驼聚合器强制CompletionOnStop与completeAllOnStop

Apache camel 骆驼聚合器强制CompletionOnStop与completeAllOnStop,apache-camel,aggregator,Apache Camel,Aggregator,forceCompletionOnStop和completeAllOnStop之间有什么区别?是否可以或建议同时使用这两种方法 从文件中: forceCompletionOnStop指示在上下文停止时完成所有当前聚合交换 completeAllOnStop表示在上下文停止时等待完成所有当前和部分(挂起)聚合交换。这还意味着,我们将等待存储在聚合存储库中的所有挂起的交换完成,以便在停止之前存储库为空。当使用仅基于内存的基于内存的聚合存储库且不在磁盘上存储数据时,您可能希望启用此功能。如果启用此选项

forceCompletionOnStop和completeAllOnStop之间有什么区别?是否可以或建议同时使用这两种方法

从文件中:

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

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


这对我来说有点让人困惑,似乎是相同的

completeAllOnStop
是一个“正常”的完成标准。Camel聚合器实现了
ShutdownAware
接口,
completeAllOnStop
标准向Camel上下文指示聚合器在关闭前需要一些额外的时间来完成聚合

forceCompletionOnStop
另一方面,尝试在关闭过程中完成所有聚合
prepareShutdown

所以对我来说,它们看起来也非常相似,它们都试图在关闭Camel上下文之前完成所有聚合。我建议使用completeAllOnStop,因为这似乎是一种更主动的方式。另见

我不知道如果同时配置它们,是否会得到“双重检查”:

请注意,如果关机是强制关机,则会跳过甚至
强制关机
!在这种情况下,Camel会尝试尽快关闭。 据我所知,当正常关机在超时时间内未成功时,Camel会执行强制关机