Jms 如何在启动后阻止mule流运行
我有一个以jms入站端点开始的mule流。 我的要求是在显式启用端点的连接器之前,防止队列读取任何消息。 因此,我有一个实现MuleContextNotificationListener的初始值设定项,覆盖通知,如下所示:Jms 如何在启动后阻止mule流运行,jms,mule,endpoint,connector,Jms,Mule,Endpoint,Connector,我有一个以jms入站端点开始的mule流。 我的要求是在显式启用端点的连接器之前,防止队列读取任何消息。 因此,我有一个实现MuleContextNotificationListener的初始值设定项,覆盖通知,如下所示: @Override public void onNotification(MuleContextNotification ctxNotification) { System.out.println("Notification order event: " + ctx
@Override
public void onNotification(MuleContextNotification ctxNotification) {
System.out.println("Notification order event: " + ctxNotification.getActionName() );
if(ctxNotification.getAction() == MuleContextNotification.CONTEXT_STARTING
|| ctxNotification.getAction() == MuleContextNotification.CONTEXT_STARTED){
try{
//Startup with the Staging and Error Q readers disabled.
System.out.println("STOPPING QUEUES : Staging and Error Queues");
//ctxNotification.getMuleContext().getRegistry().lookupConnector("lynxJMSConnectorStagingQReaderNormal").stop();
ctxNotification.getMuleContext().getRegistry().lookupConnector("lynxJMSConnectorStagingQReaderDR").stop();
ctxNotification.getMuleContext().getRegistry().lookupConnector("lynxJMSConnectorErrorQReader").stop();
ctxNotification.getMuleContext().getRegistry().lookupEndpointFactory().getInboundEndpoint("errorQueueReader").stop();
System.out.println("STOPPED QUEUES");
}catch(MuleException me){
me.printStackTrace();
}
}
}
但即使在应用程序初始化时,流仍然会启动(从jms队列读取消息)。当连接器初始化时,我应该做什么来截获它,以便停止它?如果没有,我应该使用什么机制阻止连接器读取它。我已经有了从http调用启动/停止连接器的代码
我使用的是没有注释的Mule 3.2.2
谢谢,不要在初始化阶段尝试停止流,而是将其配置为在Mule启动时停止:
<flow name="..." initialState="stopped">
然后让您的自定义逻辑在时间合适时启动,例如使用MEL:
<expression-component>app.registry.targetFlow.start();</expression-component>
app.registry.targetFlow.start();
不要在初始化阶段尝试停止流,而是将其配置为在Mule启动时停止:
<flow name="..." initialState="stopped">
然后让您的自定义逻辑在时间合适时启动,例如使用MEL:
<expression-component>app.registry.targetFlow.start();</expression-component>
app.registry.targetFlow.start();
另外还有一个名为mule deploy.properties的属性文件您可以在那里找到,所有流xml文件名都是手动写入的:-
config.resources=yourFlowName.xml
您可以删除在Mule应用程序启动时不希望启动的流名称。但是,是的,建议使用David的解决方案,您应该仅将此解决方案用作替代方案 另外还有一个名为mule deploy.properties的属性文件
您可以在那里找到,所有流xml文件名都是手动写入的:-
config.resources=yourFlowName.xml
您可以删除在Mule应用程序启动时不希望启动的流名称。但是,是的,建议使用David的解决方案,您应该仅将此解决方案用作替代方案 非常感谢大卫。你能告诉我groovy表达式在以后启动或停止流吗?你能告诉我如何使用groovy脚本启动流吗?在回答中作了进一步解释。非常感谢David。您能告诉我groovy表达式稍后启动或停止流吗?您能告诉我如何使用groovy脚本启动流吗?在响应中作了进一步解释。