У меня есть поток мула, который начинается с входящей конечной точки jms. Мое требование - запретить очереди читать какие-либо сообщения, пока я явно не включу соединитель для конечной точки. Итак, у меня есть инициализатор, реализующий 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 без аннотаций.
Спасибо,