在同一目录中具有FileSystemWatcher的多个服务器

时间:2011-09-14 04:58:02

标签: c# .net filesystems filesystemwatcher

我希望在多个服务器上观看单个目录(在共享服务器或SAN上)具有相同的服务。当一个文件出现在该目录中时,我想要一个文件,并且只有一个服务来获取该文件并处理其内容。

我试图通过在处理文件之前将文件移出共享目录来对其进行编程。我很好,只需处理无法移动文件的服务器上的异常。问题是发生冲突并导致文件不被任何一台服务器处理。

文件可能会分批到达,而不是一个接一个地到达。有没有人知道这种方法可以保证有效吗?

3 个答案:

答案 0 :(得分:2)

尝试使用FSW进行一次“主”服务。主服务处理远程机器上的所有FSW事件和命令“从属”服务以处理某个文件。轻松实现负载均衡,无多个FSW问题,无需数据库。您可以使用WCF轻松完成此任务。

答案 1 :(得分:1)

我只有一个服务器/服务监视该文件夹并在数据库文件路径中写入并更改日期和事件(复制,重命名...)然后您可以拥有所有要获取其中一个最近新记录的服务该表,锁定它并处理它。基本上,由于FSW在并发方面工作得很糟糕,我们将并发处理转移到数据库。

答案 2 :(得分:-1)

我也会建议Davide Piras的解决方案。 但是,如果您仍希望在多个服务器中查找文件监视器应用程序以查找共享目录,那么请记住一个解决方案是在文件监视器应用程序之间创建tcp连接,因为任何文件到达共享目录然后所有文件观察程序应用程序生成随机数并相互共享该数字,然后应用程序生成的最大(或最小)数字应该处理该文件。这样,只有一个文件观察程序应用程序将处理文件