【发布时间】:2020-09-22 15:53:09
【问题描述】:
我有一个每天晚上运行几个小时的 IIB 消息流,使用 java 循环每分钟执行一次某些操作。
在此期间,如果运行流的多实例代理发生故障转移,则故障转移将挂起,直到此消息流结束其处理(可能在数小时后)。
我可以在 Java 中使用任何一种钩子来表示“如果代理正在停止或故障转移,则取消此处理以让它发生”?
编辑
我现在尝试了以下代码作为测试,但即使请求停止执行组/流,布尔值都保持为真
Boolean egIsRunning = true;
Boolean aIsRunning = true;
Boolean msgFlowIsRunning = true;
while (egIsRunning && aIsRunning && msgFlowIsRunning)
{
Thread.sleep(1000);
ExecutionGroupProxy e = ExecutionGroupProxy.getLocalInstance();
egIsRunning = e.isRunning();
ApplicationProxy a = e.getApplicationByName("SANDBOX.APP");
aIsRunning = a.isRunning();
MessageFlowProxy m = a.getMessageFlowByName("SANDBOX_MSGFLOW");
msgFlowIsRunning = m.isRunning();
}
那么,我认为集成 API 在这里没有帮助吗?还是我缺少一些“.isTryingToStop”方法?
【问题讨论】:
-
simonalexander2005 - 建议使用外部调度程序,例如 control-m 来触发 IIB 中的消息流。 Control-m 可以调用一个脚本来启动您的流程,然后调用另一个脚本来停止您的流程。您可以在流程中设置一个计时器节点,以每分钟触发一次,以实现您每分钟执行一次的操作。尽量不要在消息流中保留消息流的调度逻辑,避免出现你提到的场景。