使用消息端点触发针对表的单个选择

时间:2014-07-23 15:33:57

标签: spring-integration

我们的应用程序使用jdbc:inbound-channel-adapter来轮询数据库。

新要求指定上游系统将向我们的应用程序发送消息,并且此消息将启动轮询操作。

在某些情况下,消息将包含轮询器应用于SELECT的参数。 (目前使用轮询器上的select-sql-parameter-source检索参数)。在这种情况下,我们的应用程序实际上不是轮询,而是基于消息参数对数据源进行单一选择。

集成消息端点和轮询器的最佳方法是什么?

另外,如果轮询器不适合对源表执行单个一次性选择,那么使用什么相应的Spring Integration组件呢?

由于

1 个答案:

答案 0 :(得分:1)

这种情况称为event-driven。为此,您可以使用<int-jdbc:outbound-gateway>

您可以从通用<int:inbound-channel-adapter>中为polling案例构建静态消息来利用它。因此,您不会有重复的代码,因为两个事件都将使用相同的端点。

<强>更新

让我们的成像我们有这样的事情:

<int-jdbc:outbound-gateway request-channel="selectChannel" 
      query="select * from bazz where id=:payload"/>

因此,您可以手动向id payload发送selectChannel作为<gateway>的消息,从<int-http:inbound-gateway>或外部系统的任何其他入站适配器发送消息,例如poll

由于您需要<int:inbound-channel-adapter expression="'foo'" channel="selectChannel"> <int:poller fixed-delay="1000" max-messages-per-poll="1"/> </int:inbound-channel-adapter> 相同的SELECT,您可以使用以下内容克服它:

expression

selectChannel的结果将发送到poll上的{{1}}。