首页 > 解决方案 > 使用 Camel SFTP 和 Hazelcast 幂等存储库时重复消息处理

问题描述

我正在使用版本 3.12.0 中的 Camel SFTP 组件和 Hazelcast Idempotent Repository 来防止消息被多个集群节点处理,并使用 readLock=rename 来避免消息在第三方仍在写入时被处理。

IdempotentRepository idempotentRepository = new HazelcastIdempotentRepository(hazelcastInstance, "ftp-consume-reception-map");

from(sftp(hostname + ":" + port + "/" + inputDirectory)
   .username(username)
   .password(password)
   .delay(delay)
   .maxMessagesPerPoll(maxMessagesPerPoll)
   .move(archiveDirectory)
   .moveFailed(errorDirectory)
   .idempotent(true)
   .idempotentRepository(idempotentRepository)
   .passiveMode(true)
   .readLock("rename"))

尽管使用 Hazelcast Idempotent Repository 进行了这种配置,但所有集群成员都使用和处理相同的 FTP 消息。我错过了什么 ?

标签: spring-bootapache-camelhazelcastidempotentcamel-ftp

解决方案


推荐阅读