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-poll
和 max-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
。
我经历过这个link
我有多线程环境(多节点),其中一个 select 查询有 n 行符合条件,但我配置了 max-rows-per-poll=5,然后更新了这 5 行记录。 轮询器已配置事务。
当这 5 条记录由一个节点中的一个线程处理时,所有其他线程将等待,或者它们将从 n-5 条记录中各取 5 条记录并处理?
我正在使用 int-jdbc:inbound-channel-adapter 和 Oracle 数据库。
您需要了解 max-messages-per-poll
和 max-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
。