【发布时间】:2017-04-01 07:12:43
【问题描述】:
我有一个文件夹,上游系统会在其中转储为我的应用程序输入的文件。我的应用程序读取这些文件,处理它们,然后在某个目录中输出。由于输入文件的数量很大,我决定运行我的应用程序的多个实例,并且所有实例都将为输入文件读取相同的输入目录。现在,由于多个实例会读取同一个文件夹,如何防止多个实例同时读取同一个文件?
PS:我想过使用带有 NIO 锁的 Spring Integration,但是一旦你锁定了文件,即使同一个线程也将无法读取文件。 Camel 会处理锁定,但它会锁定整个目录,并且不会在 2 个实例试图获取尚未锁定的文件的那段时间内处理场景。
任何建议都会有所帮助。
【问题讨论】:
-
您的第一个路由可以轮询文件,将它们复制到“排队”目录并在队列上创建一条消息,指定文件名。然后另一条路线可以使用排队的消息。如果第一个实例有一个实例,第二个实例有多个实例,前者还会成为瓶颈吗?
标签: java apache-camel spring-integration