微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

消息流-代理停止时结束

如何解决消息流-代理停止时结束

我有一个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之类的其他选项可以确定流量发生了什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。