【发布时间】:2012-03-15 09:00:04
【问题描述】:
我的服务器很快就会开始接收文件。这些文件将被放置在一个文件夹中。我必须一次读取文件并将数据保存到我的数据库中。我可以只使用 FileSystemWatcher 来监视文件夹,然后在观察者找到新文件时处理文件吗?或者我是否也应该使用 MSMQ,以便在观察者找到新文件后将文件放入队列中?使用 MSMQ 是不是有点矫枉过正? MSMQ 是一件好事,但只要观察者一次只处理一个文件,那么我不太确定是否真的有必要使用 MSMQ。 FileSystemWatcher 是否足以确保一次只处理一个文件?如果文件处理失败,该文件仍将在文件夹中,因此不会丢失。 所以基本上我必须在这两种模型之间进行选择:
传入文件 -> 文件放入文件夹 -> Watcher 看到文件 -> watcher 后面的代码读取文件并将其保存到 db -> Watcher 返回文件夹等待新文件。
或
传入文件 -> 文件放置在文件夹中 -> Watcher 看到文件 -> Watcher 将消息(包含文件的路径)放入队列并返回查看文件夹 -> QueueWatcher 看到消息,读取从路径中获取文件并将数据保存在数据库中 -> QueueWatcher 重新运行以侦听队列中的新消息。
【问题讨论】:
-
除非您需要处理断开连接的系统,否则我会保持简单
-
Msmq is a nice thing to have在这种情况下,您真正需要的是什么? -
这是我的问题 :) 我开始认为我需要 msmq,因为我被告知我们的服务器需要处理大量传入文件。现在我知道这些文件将通过放置在我们服务器上的文件夹中发送给我们。然后我转向 filesystemwatcher 但在做出最终决定之前,我只是想确保它是一个足够的解决方案:)
标签: c# .net msmq filesystemwatcher