Spring int-jdbc:入站通道适配器事务

Spring int-jdbc:inbound-channel-adapter transaction

我经历过这个link 。这很helpful.I 对下面的观点有疑问。

我有多线程环境(多节点),其中一个 select 查询有 n 行符合条件,但我配置了 max-rows-per-poll=5,然后更新了这 5 行记录。 轮询器已配置事务。

当这 5 条记录由一个节点中的一个线程处理时,所有其他线程将等待,或者它们将从 n-5 条记录中各取 5 条记录并处理?

我正在使用 int-jdbc:inbound-channel-adapter 和 Oracle 数据库。

您需要了解 max-messages-per-pollmax-rows 之间的区别:https://docs.spring.io/spring-integration/docs/5.0.7.RELEASE/reference/html/jdbc.html#jdbc-max-rows-per-poll-versus-max-messages-per-poll

同样对于 Oracle,如果您真的想获取新记录并且不要等待已经锁定,我建议使用 FOR UPDATE SKIP LOCKED