1

嗨 Artem / Gary / 朋友们,

有一个要求,我需要在 PROD 上的应用程序服务器上部署我的耳朵。解决方案流程从 SI 流中的 JMS 消息侦听器开始,整个框架是基于 SI 的,我们使用了延迟聚合器 JDBC 出站适配器。现在在部署之前,我需要知道 SI 流中没有活动的活动线程(意味着所有通道都已完成处理,并且中间没有活动消息),以便我可以开始在我的应用程序服务器上部署 EAR。由于我已经使用控制总线停止消息侦听器,但我还需要知道消息处理已完成以结束并且流中不存在实时 SI 消息。

你能帮忙吗?

谢谢拉姆

4

1 回答 1

0

嗯,实际上我不确定你为什么担心这个。任何重新部署都会导致应用程序停止和资源处理,因此,此后不再有任何线程活动。

尽管您可以考虑将其SmartLifecycleRoleController用于为所有关键端点分配相同的目的,role并在需要时调用它stopLifecyclesInRole()

从另一端来看,端点意味着它不会使用来自(或 JMS 等源系统)stop的任何新消息。channel任何长时间运行的线程都将仍然处于活动状态,甚至可能在消息周围有一些进程。AFAIK 容器尝试完成应用程序的所有活动线程,如果不是,最终只是中断。对于这种情况,您绝对应该确保关键数据的一些事务/知识拒绝语义。因此,任何未完成的进程都会以消息的回调/nack 状态结束。并且您的应用程序的新实例将能够再次为该消息重新开始。

关于在运行时检查线程活动的一些钩子,我没有任何答案。但我想知道您是否能够弄清楚在 JMS Inbound Endpoint 停止之后claim-check等到sendingpart 相等。processed

于 2016-05-04T22:44:52.060 回答