我们的应用程序使用jdbc:inbound-channel-adapter
来轮询数据库。
新要求指定上游系统将向我们的应用程序发送消息,并且此消息将启动轮询操作。
在某些情况下,消息将包含轮询器应用于SELECT的参数。 (目前使用轮询器上的select-sql-parameter-source
检索参数)。在这种情况下,我们的应用程序实际上不是轮询,而是基于消息参数对数据源进行单一选择。
集成消息端点和轮询器的最佳方法是什么?
另外,如果轮询器不适合对源表执行单个一次性选择,那么使用什么相应的Spring Integration组件呢?
由于
答案 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}}。