我们使用SpringIntegration2.1将消息持久化到客户端发送的数据库中。
有一个队列将由自定义适配器填充。配置的服务激活器轮询此队列,并将消息释放到spring托管@Repository。所有错误将被捕获到一个错误通道,并将由一个服务处理。到目前为止,配置工作得很好。
我担心的是,如果数据库不可用,服务激活器会轮询来自队列的所有传入消息,并将它们放入错误通道。是否有一种方法可以防止服务激活器在数据库显然不可用时轮询消息,例如发送测试查询?
我的配置:
<int:channel id="inChannel">
<int:queue />
</int:channel>
<bean id="service" class="some.service.Service" />
<int:service-activator ref="service"
method="write" input-channel="inChannel">
<int:poller fixed-rate="100" task-executor="srvTaskExecutor"
receive-timeout="90" error-channel="errChannel" />
</int:service-activator>
<task:executor id="srvTaskExecutor" pool-size="2-10"
queue-capacity="0" rejection-policy="DISCARD" />
<int:channel id="errChannel" />
<int:service-activator input-channel="errChannel"
ref="errorService" method="write"/>
致以问候。
发布于 2012-02-16 16:14:58
如果您给轮询服务激活器一个"id",您可以引用该实例并根据是否可用的DB调用start()或to ()。很可能您也希望在该服务激活器上设置自动启动=“false”。
此外,您甚至可以定义一个“control”元素,然后向该控制总线的输入通道发送"myActivator.start()“和"myActivator.stop()”之类的消息。
希望能帮上忙,马克
https://stackoverflow.com/questions/9313583
复制相似问题