51.14.2. orphan Lock aware Jdbc IdempotentRepository


org.apache.camel.processor.idempotent.jdbc.JdbcMessageIdRepository 的限制之一是它不处理 JVM 崩溃或非正常关闭导致的孤立锁定。如果此实施与 camel-file 和 camel-ftp 等使用,这可能会导致无处理的文件/消息。如果您需要 address orphan locks 处理,则使用 org.apache.camel.processor.idempotent.jdbc.JdbOcrphanLAwareIdempotentRepository。此仓库跟踪由应用程序实例保留的锁定。对于每个锁定保留,应用程序会将持续信号发送到锁定存储库,从而导致使用当前的 Timestamp 更新 createdAt 列。当应用程序实例在尝试获取锁定时,存在三个可能:

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

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

Expand
参数Description

lockMaxAgeMillis

这是指锁定被视为孤立的持续时间。如果 currentTimestamp - createdAt >= lockMaxAgeMillis,则锁定会被孤立。

lockKeepAliveIntervalMillis

keep 持续更新的频率会被执行给 createdAt Timestamp 列。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat