Spring Integration中jdbc support配置定时任务

<int-jdbc:inbound-channel-adapter channel="jdbcInboundChannel"
                                      data-source="dataSource"
                                      max-rows-per-poll="100"
                                      row-mapper="AMapper"
                                      query="select * from A"
                                      update="delete from A">
        <int:poller fixed-delay=100 error-channel="ErrorChannel" task-executor="Excutor">
            <int:transactional propagation="REQUIRED" transaction-manager="transactionManager"/>
        </int:poller>
</int-jdbc:inbound-channel-adapter>

<task:executor id="Excutor" pool-size="10"/>

一开始以为配置了fixed-delay,就万事无忧了,但是发现select出来的一直有重复的。不是说好的处理完上一个任务,再隔100ms才做下一个定时任务吗?因为没找到对fixed-delay定时任务结束标志的文档,所以就简单根据日志总结了一下,主要原因应该是这里的Excutor线程池配置了10个,同时si中的fixed-delay的定时任务结束标志好像并不是jdbc事务的提交,或者不同excutor线程之间是不相互影响的。

查看日志可以看到,不管jdbc的事务有没有提交,无论配置的是fixed-delay还是fixed-rate,每隔100ms,定时任务都会执行,但是是不同线程的excutor,并且每个excutor都能查询到。解决方案就是pool-size配置为1,或者确保jdbc的事务在fixed-delay的时间内能完成,但这样感觉配多个线程好像又没什么意义了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值