当前位置: 首页 > 知识库问答 >
问题:

为幂等的file2组件跳过重复

孙福
2023-03-14

我在集群环境中使用camel,并希望在我的文件使用者endpoint上使用readlock,这样只有一个服务器尝试处理每个文件。唯一的集群安全readlock是幂等readlock,但是这需要在文件URI上设置一个idempotentRepository。

我在路由中使用一个幂等使用者,它将任何重复的文件移动到错误文件夹,并将错误记录到特定的文件中。这使用指定的JDBCMessageIdRepository来存储幂等键。

是否有一种html" target="_blank">方法可以将幂等消费者的重复处理逻辑与幂等readlock一起使用?或者如何将文件组件中的idempotentRepository设置为不跳过重复项,以便由路由中的幂等使用者拾取它们?

共有1个答案

张姚石
2023-03-14

如果您使用相同的幂等存储库密钥进行锁定和消费,那么您将无法尝试处理同一个文件两次--幂等使用者的检查将发生在read Lock的检查之后,因此您的文件将在使用者检查它是否存在之前被跳过。另外,我认为您可能会遇到使用者和读锁本身的问题,因为使用者可能会报告您的文件已存在,因为读锁将在使用者进行检查之前在数据库中插入该行。

我能想到的最快的解决方案是为幂等使用者和读锁使用不同的键-这样它们之间就不会有任何冲突-并且通过将ReadLockRemoveonCommit设置为true使读锁在提交时移除键。这样,读锁将不允许并发处理文件,而是使用幂等使用者的密钥来检查文件以前是否被处理过。

 类似资料:
  • 我读过很多地方说HTTP补丁是非幂等的。有人能解释一下为什么它是非幂等的吗?因为根据定义,幂等方法可以改变资源状态,也可以不改变资源状态,但是重复的请求在第一个请求之后应该不会有进一步的副作用。重复的补丁请求如何改变资源状态?

  • HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。(注意是副作用) GET http://www.bank.com/account/123456,不会改变资源的状态,不论调用一次还是N次都没有副作用。请注意,这里强调的是一次和N次具有相同的副作用,而不是每次GET的结果相同。GET http://www.news.com/latest-news这个HTTP请求可能会每次得到不同

  • 我有一个物理服务器,其中运行着两个Apache Camel实例a。两者都包含相同的集成工件。任务是将来自服务器文件系统的文件与由cron作业触发的Apache Camel的文件组件集成。文件处理应该只发生一次。因此,我对同一服务器上的Jdbc存储库使用幂等模式。 总的来说,它工作得很好。但有时,在少数情况下,两个实例都运行并读取文件,因此文件被处理两次。在JDBC数据库中,键也被插入两次(甚至创建

  • 我想提出我的问题的一种方式是:如果我使用put来进行一个非幂等调用,然后使用POST来这样做,会有什么问题呢?

  • 问题内容: 我试着通过网络搜索,但是徒劳。有没有一种方法可以使用hibernate来执行幂等更新。 一种用例是使用HTTP PUT通过REST API更新数据库中的特定字段。因此,例如,如果我有一个包含列: _ Id,Name,Phone,UpdateDate*_ 的数据库 _ ,_ 并且我多次用相同的值更新(特定 ID的 ) Phone ( 电话) 字段,那么只有我的第一个操作必须更新 Phon

  • Kafka文件说,幂等生产者是可能的,与相同的生产者会话,我无法理解这一点。 比方说,Kafka为每条消息添加序列号,最后一个序列号在Kafka中维护(不确定它维护在哪里)。 它是如何生成序列号的,它保存在哪里? 为什么当制作人崩溃并再次出现时,它不能保持序列? 我怎样才能使它在制作人会话之间真正幂等?