使用多个服务器监视共享文件夹

时间:2015-01-07 22:02:08

标签: .net windows service concurrency filesystems

我有一个监控共享文件夹的Windows服务,当创建文件时,处理它然后将其删除。为此,我设置了一个计时器,每隔10秒查询文件夹中的文件,并设置一个BlockingCollection来分割多个线程之间的工作。

到目前为止,这个解决方案对我来说很好,但是现在我想在多个服务器上运行多个服务实例,监视相同的输入文件夹。

问题是在同步服务时不会相互干扰。

已经想到的一个解决方案是将监控本身分离给不同的主人'节点并使用多个实例作为从属,但我希望服务实例保持独立。

任何遇到类似情况的人的想法?

1 个答案:

答案 0 :(得分:0)

如果文件(让它的名字命名为“filename.ext”)可以在独占模式下打开进行处理,那对你来说很不错,因为你不需要做任何事情而不是打开那个文件。

如果文件夹本身是可写的,您可以在那里创建一个名为“filename.ext.sem”的信号量文件,让其他服务知道正在处理“filename.ext”文件。

如果以上都不适合您,那么您需要一些集中的位置作为信号量的占位符(无论是文件,数据库记录还是其他内容)。

在更复杂的情况下,您需要使用动态主机构建一个方案,其中一个实例扮演主人的角色,而其他实例扮演奴隶,但在您的情况下这将是一个过度杀伤。