spring集成在数据库不可用时防止轮询
我们使用SpringIntegration2.1将消息持久化到客户端发送的数据库中 有一个队列将由自定义适配器填充。配置的服务激活器轮询此队列并将消息释放到spring管理的@Repository bean。所有错误都将被捕获到错误通道,并由服务处理。到目前为止,配置工作正常 我担心的是,如果数据库不可用,服务激活器将轮询来自队列的所有传入消息,并将它们放入错误通道如果数据库明显不可用,是否有方法阻止service activator轮询消息,例如发送测试查询? 我的配置:spring集成在数据库不可用时防止轮询,spring,jakarta-ee,spring-integration,Spring,Jakarta Ee,Spring Integration,我们使用SpringIntegration2.1将消息持久化到客户端发送的数据库中 有一个队列将由自定义适配器填充。配置的服务激活器轮询此队列并将消息释放到spring管理的@Repository bean。所有错误都将被捕获到错误通道,并由服务处理。到目前为止,配置工作正常 我担心的是,如果数据库不可用,服务激活器将轮询来自队列的所有传入消息,并将它们放入错误通道如果数据库明显不可用,是否有方法阻止service activator轮询消息,例如发送测试查询? 我的配置: <int:ch
<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"/>
注意。如果您给轮询服务激活器一个“id”,您可以引用该实例并根据数据库是否可用对其调用start()或stop()。最有可能的情况是,您还希望在该服务激活器上设置auto startup=“false” 此外,您甚至可以定义一个“控制总线”元素,然后将“myActivator.start()”和“myActivator.stop()”之类的消息发送到该控制总线的输入通道 希望有帮助,
Mark我决定按照您的建议定义控制总线并启动/停止service activator。谢谢你的快速回答。