jmsインバウンドエンドポイントで始まるラバフローがあります。私の要件は、エンドポイントのコネクタを明示的に有効にするまで、キューがメッセージを読み取らないようにすることです。したがって、MuleContextNotificationListenerを実装するInitializerがあり、以下のように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呼び出しからコネクタを開始/停止するコードはすでにあります。
アノテーションなしでMule3.2.2を使用しています。
ありがとう、