首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当数据库不可用时,spring集成可防止轮询。

当数据库不可用时,spring集成可防止轮询。
EN

Stack Overflow用户
提问于 2012-02-16 15:03:24
回答 1查看 919关注 0票数 0

我们使用SpringIntegration2.1将消息持久化到客户端发送的数据库中。

有一个队列将由自定义适配器填充。配置的服务激活器轮询此队列,并将消息释放到spring托管@Repository。所有错误将被捕获到一个错误通道,并将由一个服务处理。到目前为止,配置工作得很好。

我担心的是,如果数据库不可用,服务激活器会轮询来自队列的所有传入消息,并将它们放入错误通道。是否有一种方法可以防止服务激活器在数据库显然不可用时轮询消息,例如发送测试查询?

我的配置:

代码语言:javascript
运行
复制
<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"/>

致以问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-16 16:14:58

如果您给轮询服务激活器一个"id",您可以引用该实例并根据是否可用的DB调用start()或to ()。很可能您也希望在该服务激活器上设置自动启动=“false”。

此外,您甚至可以定义一个“control”元素,然后向该控制总线的输入通道发送"myActivator.start()“和"myActivator.stop()”之类的消息。

希望能帮上忙,马克

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9313583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档