我们有一个外部系统接口,我们从中获取平面文件并处理这些文件。目前,我们每天运行几次工作,检查文件是否位于ftp位置,然后进行处理(如果存在)。 我最近读到,将文件系统用作消息代理是一个坏主意,这就是我提出这个问题的原因。有人可以澄清一下这样的情况是否适合使用其他工具,如果是这样的话? 我们是一个基于Java的应用程序。
答案 0 :(得分:2)
你应该问的第一个问题是“它有效吗?”。
如果答案是肯定的,那么你应该谨慎对待变化只是因为你读到它是一个坏主意。我读过巧克力可能对你有害但我不放弃它: - )
可能遇到的潜在问题,例如在您不知情的情况下删除文件,或尝试处理仅半转移的文件(尽管有办法减轻这两个问题) ,例如前一种情况下的权限,或后一种情况下使用的哨兵文件或内容检查。)
我自己,我更喜欢消息排队系统,例如IBM的MQ或JMS(因为它们是为它们构建的,它们确实让生活变得更轻松)但是,按照上面的第二段,只有在以下情况之一:
最后一颗子弹需要扩展。虽然工作可能是不必要的(在修复不存在的问题方面),但这并不一定使它无用,特别是如果它可以提高性能或安全性,或减少维护工作。
答案 1 :(得分:0)
我会使用数据库来同步你的文件。有一个指向文件位置的数据库。仅在文件完全传输后才将条目放入数据库。这将确保您获取已完成的文件。您可以轮询数据库以检查是否存在新条目而不是轮询文件系统。一个非常简单的简单设置轮询机制。如果您希望在文件夹中出现新文件时被告知,那么您需要进入消息队列。