【发布时间】:2012-10-25 16:48:11
【问题描述】:
我在计算机集群上使用 ActiveMQ 在 java 进程之间发送消息。
集群具有可从所有主机访问的共享 NFS 挂载。
我遇到了以下场景的问题:
- 主机 A 创建一个新文件“/path/to/shared/nfs/xyz”
- 主机 A 向主机 B 发送消息:“process /path/to/shared/nfs/xyz”
- 主机B收到消息,尝试打开文件
- 主机 B 失败,因为 NFS 客户端尚未注意到之前在 A 上创建了一个新文件(ActiveMQ 和 NFS 协议之间的竞争条件)
我的解决方案是在所有消息接收器中添加一个循环,该循环最多会等待 1 分钟,以便 NFS 意识到添加了一个新文件。
然而,这个解决方案似乎不干净。解决这个问题的好方法是什么?您知道任何适用的企业集成设计模式吗?
【问题讨论】:
-
我认为文件太大而无法通过 jms 发送?有多大?
标签: design-patterns activemq messaging apache-camel nfs