51.14.2. Orphan Lock aware Jdbc IdempotentRepository


org.apache.camel.processor.idempotent.jdbc.JdbcMessageIdRepository 的一个限制是,它不会处理由 JVM 崩溃或非正常关闭导致的孤立锁定。如果您需要解决孤立锁定处理,则使用 org.apache.camel.processor.idempotent.jdbc.jdbc.JdbcOrphanLockAwareIdempotent.jdbc.JdbcOrphanLockAwareIdempotentRepository,则可能会导致未处理的文件/信息。此存储库跟踪由应用程序实例保存的锁定。对于每个保留锁定,应用程序将向锁定存储库发送实时信号,从而使用当前的 Timestamp 更新 createdAt 列。当应用程序实例试图获取锁定时,如果存在三个可能性:

  • 锁定条目不存在,然后使用 JdbcMessageIdRepository 的基本实现来提供锁定。
  • 锁定已存在,createdAt < System.currentTimeMillis ()- lockMaxAgeMillis。在这种情况下,假设一个活跃的实例具有锁定,且锁定没有被提供给请求锁定的新实例
  • 锁定已存在,并且 createdAt > = System.currentTimeMillis ()- lockMaxAgeMillis。在这种情况下,假设没有活跃的实例具有锁定,并且该锁定提供给请求实例。背后的原因是,如果原始有锁定的实例仍在运行,它将使用其 keepAlive 机制更新 createdAt 上的 Timestamp

此软件仓库有两个额外的配置参数

参数描述

lockMaxAgeMillis

这指的是锁定被视为孤立的 i.e. 的持续时间。如果 currentTimestamp - createdAt >= lockMaxAgeMillis then lock is孤立。

lockKeepAliveIntervalMillis

保持 alive 更新的频率为 createdAt Timestamp 列。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.