Spring 集成 JdbcMessageHandler - 包含多个项目的负载
Spring Integration JdbcMessageHandler - payload with multiple items
如何处理负载中的多条消息?
我尝试了以下方法:
@Bean
@ServiceActivator(inputChannel = "outChannel")
public MessageHandler jdbcMessageHandler() {
JdbcMessageHandler jdbcMessageHandler = new JdbcMessageHandler(getDataSource(), getSql());
jdbcMessageHandler.setPreparedStatementSetter((ps, message) -> {
Item[] items = ((Item[]) message.getPayload());
Arrays.stream(items).forEach(item -> {
ps.setString(1, item.getName());
}
ps.addBatch();
}
return jdbcMessageHandler;
}
但多次插入最后一条消息。
(注意:对 bean 使用 java 配置而不是 xml)
查看文档:https://docs.spring.io/spring-integration/reference/html/jdbc.html#batch-update
the JdbcMessageHandler
performs a JdbcOperations.batchUpdate()
if the payload of the request message is an Iterable
instance.
Iterable
,不是我在您的示例中看到的数组。因此,考虑将您的数组转换为 List
,您应该能够同时处理多个项目的批量更新。
如何处理负载中的多条消息?
我尝试了以下方法:
@Bean
@ServiceActivator(inputChannel = "outChannel")
public MessageHandler jdbcMessageHandler() {
JdbcMessageHandler jdbcMessageHandler = new JdbcMessageHandler(getDataSource(), getSql());
jdbcMessageHandler.setPreparedStatementSetter((ps, message) -> {
Item[] items = ((Item[]) message.getPayload());
Arrays.stream(items).forEach(item -> {
ps.setString(1, item.getName());
}
ps.addBatch();
}
return jdbcMessageHandler;
}
但多次插入最后一条消息。 (注意:对 bean 使用 java 配置而不是 xml)
查看文档:https://docs.spring.io/spring-integration/reference/html/jdbc.html#batch-update
the
JdbcMessageHandler
performs aJdbcOperations.batchUpdate()
if the payload of the request message is anIterable
instance.
Iterable
,不是我在您的示例中看到的数组。因此,考虑将您的数组转换为 List
,您应该能够同时处理多个项目的批量更新。