我们需要在维护活动期间停止某些骡子流(基本上是为了避免在系统维护时处理任何消息)。我们使用以下块来停止,并在维护完成后启动类似的块。此流上的入站端点是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!");
}
}
}
答案 0 :(得分:0)
我上周写了一篇博文,关于如何使用Groovy启动和停止流程的基础知识就在那里。 http://www.corralict.nl/how-to-start-stop-mule-flows-from-a-client-over-http/
不知道这是否有助于您的特定用例。