apache-camel - 骆驼聚合器 forceCompletionOnStop VS completeAllOnStop
问题描述
forceCompletionOnStop 和 completeAllOnStop 有什么区别?是否可以或建议同时使用两者?
从文档中:
forceCompletionOnStop指示在上下文停止时完成所有当前聚合交换
completeAllOnStop指示在上下文停止时等待完成所有当前和部分(未决)聚合交换。这也意味着我们将等待存储在聚合存储库中的所有未决交换完成,以便在我们停止之前存储库为空。您可能希望在使用仅基于内存的基于内存的聚合存储库时启用此功能,并且不要将数据存储在磁盘上。启用此选项后,聚合器在停止 CamelContext 或使用它的路由时等待完成所有这些交换。
它对我来说有点混乱,它似乎是一样的
解决方案
completeAllOnStop
是一个“正常”的完成标准。Camel 聚合器实现该ShutdownAware
接口,并且completeAllOnStop
标准向 Camel 上下文指示聚合器在关闭之前需要一些额外的时间来完成其聚合。
forceCompletionOnStop
另一方面,尝试在关闭过程中完成所有聚合( prepareShutdown
)。
所以对我来说,它们似乎也非常相似,两者都试图在关闭 Camel 上下文之前完成所有聚合。我建议使用completeAllOnStop
,因为这似乎是更主动的方式。有关关闭策略的更多信息,另请参阅Camel Docs 。
如果你同时配置它们,我不知道你是否得到“双重检查”:-)
请注意,即使
forceCompletionOnStop
关机是强制关机,也会跳过!在这种情况下,Camel 会尝试尽快关闭。据我所知,当正常关机在超时内不成功时,Camel 会强制关机。
推荐阅读
- reactjs - 如何在反应中在客户端显示动态获取的图像?
- excel - 使用 xlUp 将适当的大小写设置为范围
- rx-java2 - 为什么 Observable.subscribe() 会抛出 NullPointerException?
- azure-functions - 带有 IoT 中心触发器的 Azure 函数获取发送设备
- reactjs - React antd Upload input required error with default list
- quantum-computing - Qiskit 中的 state_fidelity() 函数有什么作用?
- python - 在wx python中打开子窗口时关闭父窗口
- google-apps-script - 如何使用谷歌脚本将多个范围复制到另一张工作表中的完全相同的位置?
- django - 当调试 = false 时,apache 不服务媒体文件 django
- python-3.x - 如何在 python 中一起使用多个 bigquery 项目