【问题标题】:Spring int-jdbc:inbound-channel-adapter transactionSpring int-jdbc:inbound-channel-adapter 事务
【发布时间】:2018-07-28 06:09:10
【问题描述】:

我已经浏览了这个链接 spring integration jdbc adapter for multiple nodes。这很有帮助。我对以下几点有疑问。

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

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

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

【问题讨论】:

    标签: spring spring-integration spring-jdbc


    【解决方案1】:

    您需要了解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

    【讨论】:

    • 感谢@Bilan 的回答。
    • @Bilan 如果 2 个节点在确切时间(相同秒和毫秒)尝试访问选择查询返回的相同数据如何处理。 2个节点之间,如何优先一个。
    • 请阅读 Oracle 中的 FOR UPDATE SKIP LOCKED 是什么。您不需要任何其他配置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多