我们使用 Spring Integration 2.1 将消息持久化到客户端发送的数据库中。
有一个队列将由自定义适配器填充。配置的服务激活器轮询此队列并将消息发布到 Spring 管理的 @Repository bean。所有错误都将被捕获到错误通道并由服务处理。到目前为止,配置工作正常。
我担心的是,如果数据库不可用,服务激活器会轮询来自队列的所有传入消息并将它们放入错误通道。如果数据库显然不可用,是否有办法阻止服务激活器轮询消息,例如通过发送测试查询?
我的配置:
<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"/>
问候。