消息流-代理停止时结束

问题描述

我有一个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();
    }

因此,我认为Integration API在这里没有帮助吗?还是我缺少一些“ .isTryingToStop”方法

解决方法

我建议看一下Integration API

在Java Compute节点内,您可以连接BrokerProxy.getLocalInstance()(不要忘记连接disconnect(),否则最终会耗尽内存)。然后,我尝试使用MessageFlowProxy.isRunning()作为循环的退出条件。

如果isRunning不起作用,还有AdministeredObjectListener之类的其他选项可以确定流量发生了什么。