ApacheCamel JDBC轮询和幂等性
我正在构建一个简单的camel路由,它应该连续轮询一个表并将数据推送到ActiveMQ中。每次轮询应仅提取以前未提取的数据。我能想到的最好的方法是跟踪最后一个成功处理的序列id,然后选择序列id大于前一个的项目ApacheCamel JDBC轮询和幂等性,jdbc,apache-camel,camel-jdbc,Jdbc,Apache Camel,Camel Jdbc,我正在构建一个简单的camel路由,它应该连续轮询一个表并将数据推送到ActiveMQ中。每次轮询应仅提取以前未提取的数据。我能想到的最好的方法是跟踪最后一个成功处理的序列id,然后选择序列id大于前一个的项目 是否有标准的方法来执行此操作?在的Camel文档中,有一个属性onConsume: “…在处理每行之后,如果交换成功,则可以执行此查询,例如将该行标记为已处理…”在多用户数据库中,序列id较低的行可以在id较高的行之后提交(当然,在Oracle和SQLServer中,我怀疑任何具有事务支
是否有标准的方法来执行此操作?在的Camel文档中,有一个属性onConsume:
“…在处理每行之后,如果交换成功,则可以执行此查询,例如将该行标记为已处理…”在多用户数据库中,序列id较低的行可以在id较高的行之后提交(当然,在Oracle和SQLServer中,我怀疑任何具有事务支持的dbms中都存在这种情况)。在这种情况下,仅仅跟踪最后处理的id可能会导致从未处理过的行 如果您可以控制模式并且是处理此表的唯一对象,那么解决此问题的最简单方法是向表中添加某种“已处理”列并更新该列(如@Arnaud所建议的) 如果这不是一个选项,那么我考虑了另外3种机制来解决这个问题: