2013-09-25 59 views
2

我有一個Web應用程序,通過消息隊列與另一個應用程序進行交互。因此,我的Web應用程序具有綁定到入站消息驅動通道適配器的service-actibator;目前它總是監聽隊列中的消息。是否可以在運行時啓動/停止服務激活器?

但是,可能有些時候可以在不反彈應用程序本身的情況下關閉監聽。例如,如果隊列獲得消息積壓,並且出於某種原因,正在監聽這些消息的Web應用程序開始出現性能問題,並且我們希望將應用程序與隊列隔離起來以幫助確定這是否是性能的來源問題與否。

底線是我們正試圖主動尋找方法來幫助我們的支持人員在需要診斷潛在的系統間問題時......而不必爲服務器反彈而改變配置。

然後,如果確定應重新打開與外部系統的接口,那麼我們希望能夠重新啓動服務激活器。

是這樣的可能嗎?還是有沒有一種方法,我沒有想到會允許這種類型的運行時啓動/停止功能?

回答

0

是的。 Spring集成中的所有端點實現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"/>