骡子停止和启动流程手动保持陈旧的消费者和消息卡住

时间:2016-05-19 18:36:00

标签: java jms mule esb

我们需要在维护活动期间停止某些骡子流(基本上是为了避免在系统维护时处理任何消息)。我们使用以下块来停止,并在维护完成后启动类似的块。此流上的入站端点是JMS类型(使用Tibco EMS)。一切都很好,除了有时在停止和开始之后,有一个不好的消费者,所以mule创造了一个额外的消费者。坏消费者消费消息(消息在维护后到达时第一次)并且不消息。所以基本上消息被卡住了,应用程序永远不会收到这个消息。

知道如何解决这个问题吗?有没有更好的方法可以在一段时间内停止消费消息 - 而不是关闭整个应用程序?

    for (FlowConstruct flowConstruct : flowConstructs) {
        Flow flow = (Flow) flowConstruct;
        if (flowsToStop.contains(flow.getName())) {
            if(!flow.isStopped()) {
                flow.stop();
            } else {
                logger.warn("Flow " + flow.getName() + " was already stopped!");
            }

        }
    }

1 个答案:

答案 0 :(得分:0)

我上周写了一篇博文,关于如何使用Groovy启动和停止流程的基础知识就在那里。 http://www.corralict.nl/how-to-start-stop-mule-flows-from-a-client-over-http/

不知道这是否有助于您的特定用例。