当前正在学习spring集成,我想从MySQL数据库中检索信息以在int:service-activator
或int:splitter
中使用。
不幸的是,似乎大多数示例和文档都基于使用int-jdbc:inbound-channel-adapter
的想法,而int:gateway
本身就需要一个轮询器。我不想轮询数据库,而是根据源自int-jdbc:outbound-gateway
的现有消息的有效负载来检索特定数据。然后,这些数据将用于进一步修改有效负载,或帮助拆分消息。
根据说明,我尝试使用int-jdbc:outbound-gateway
:
... jdbc.JdbcOutboundGateway',用于更新数据库以响应请求通道上的消息,和/或从数据库中检索数据...
这意味着它仅可用于检索数据,而不仅用于更新,而且在我实现它时,有人抱怨至少需要一条更新语句:
所以我目前正坐在一个看起来像这样的有缺陷的原型上:
带圆圈的部分是无效的incomingGateway
。
我的最终目标是根据来自analyzerSplitter
的有效负载(如上图所示),从MySQL数据库中检索一些信息,并使用该数据在{{1}中拆分消息。 },或使用int:service-activator
修改有效负载。然后,所有这些都应该链接到一个int-jdbc:message-store
上,我认为它可以帮助提高性能。我不想定期轮询数据库,也不想更新数据库中的任何内容。
通过使用轮询int-jdbc:inbound-channel-adapter
进行测试,我相信我的数据源bean设置正确并且查询可以执行。
我该如何在spring集成中正确设置这种行为?
答案 0 :(得分:0)
如果要在更新数据库后继续该流程,则可以在服务激活器调用的方法中简单地使用JdbcTemplate
,或者如果在流程结束时使用{{3 }}。
出站通道适配器与入站通道相反:其作用是处理消息并使用它执行SQL查询。默认情况下,消息有效负载和标头可用作查询的输入参数,如以下示例所示:
...