2013-09-25 6 views
2

У меня есть веб-приложение, которое взаимодействует с другим приложением через очередь сообщений. Итак, мое веб-приложение имеет сервисный-активатор, связанный с адаптером канала с входящим сообщением; в настоящее время он всегда прослушивает сообщения в очереди.Возможно ли запустить/остановить активатор службы во время выполнения?

Однако могут быть моменты, когда желательно отменить это прослушивание, не отскакивая от приложения. Например, если очередь получает отставание от сообщений и по какой-либо причине веб-приложение, которое прослушивает эти сообщения, начинает испытывать проблемы с производительностью, и мы хотим изолировать приложение от очереди, чтобы определить, является ли это источником производительности проблема или нет.

Суть в том, что мы пытаемся найти способы помочь нашему персоналу службы поддержки при необходимости диагностики возможных межсистемных проблем ... без необходимости отказываться от серверов для изменения конфигурации.

Затем, если будет определено, что интерфейс к внешней системе должен быть включен, тогда мы захотим возобновить активацию службы.

Возможно ли это как можно? Или есть подход, который я не думаю о том, что позволит использовать этот тип запуска/остановки?

ответ

0

Да, это так. Все конечные точки в интегральной установке весны org.springframework.context.SmartLifecycle. С другой стороны SI имеет компонент для этой цели - Control Bus Таким образом, это очень просто:

<channel id="controlBusChannel"/> 

<control-bus input-channel="controlBusChannel"/> 

<service-activator input-channel="stopMyServiceActivatorChannel" 
    putput-channel="controlBusChannel" expression="'@myServiceActivator.stop()'"/> 

<service-activator id="myServiceActivator" input-channel="myInputChannel" 
    putput-channel="myOutupChannel"/> 
Смежные вопросы