感谢 JMX(Java 控制台),我尝试使用文件组件消费者端点重新启动路由。
from("file:<some dir>?noop=true")
我正在使用窃听模式通过其他文件端点记录中间数据转换。在骆驼应用程序第一次启动时,一切都很好,并且输入目录中已经存在的所有文件都被轮询和处理。
但是当我尝试通过 jmx 重新启动路由时,什么也没有发生。我尝试在重新启动路由之前手动删除 .camel 目录 - 我猜是默认的 FileIdempotentRepository 创建的,但徒劳无功。我还尝试使用 MemoryIdempotentRepository 更改 IdempotentRepository 的类型:
from("file:<somedir>?noop=true").idempotentConsumer(header("CamelFileName"), MemoryIdempotentRepository.memoryIdempotentRepository(1000))
即使我在 java 控制台中重新启动路由之前触发了此 MemoryIdempotentRepository 的 clear() 操作,重新启动后也不会从输入目录轮询任何内容。
如果我添加一个文件,它可以工作。如果已经轮询过一次的文件有持久的历史记录,那么一切都会表现得如此。
我想知道使用选项“noop=true”是否会创建一个我无法用 jmx 控制的非托管幂等存储库。
如果为 true,则不会以任何方式移动或删除文件。此选项适用于只读数据或 ETL 类型要求。如果 noop=true,Camel 也会设置 idempotent=true,以避免重复使用相同的文件。
任何想法 ?(我使用的是骆驼核心 2.21)