我有一个以 jms 入站端点开始的 mule 流。我的要求是防止队列读取任何消息,直到我明确启用端点的连接器。所以我有一个实现 MuleContextNotificationListener 的初始化器,覆盖 onNotification 如下所示:
@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。
谢谢,