2

我有一个通过消息队列与另一个应用程序交互的 Web 应用程序。因此,我的 Web 应用程序有一个绑定到入站消息驱动通道适配器的服务执行器;目前它一直在监听队列中的消息。

但是,有时可能希望在不弹跳应用程序本身的情况下关闭监听。例如,如果队列收到积压的消息,并且无论出于何种原因,正在侦听这些消息的 Web 应用程序开始出现性能问题,我们希望将应用程序与队列隔离,以帮助确定这是否是性能的来源问题与否。

底线是我们正在尝试主动寻找方法来帮助我们的支持人员在需要诊断潜在的系统间问题时......而不必为了配置更改而反弹服务器。

然后,如果确定应该重新打开与外部系统的接口,那么我们希望能够重新启动服务激活器。

这样的事情可能吗?或者是否有一种我没有想到的方法可以允许这种类型的运行时启动/停止功能?

4

1 回答 1

0

对的,这是可能的。Spring Integration 中的所有 Endpoints 都实现了org.springframework.context.SmartLifecycle. 另一方面,SI 有一个用于此目的的组件 -控制总线 所以,它非常简单:

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

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

<service-activator id="myServiceActivator" input-channel="myInputChannel"
    output-channel="myOutupChannel"/>
于 2013-09-25T13:42:07.423 回答