ActiveMQ + NFS竞争条件

时间:2012-10-25 16:48:12

标签: design-patterns activemq messaging apache-camel nfs

我在一组计算机上使用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实现添加新文件。

然而,这个解决方案似乎不洁净。解决这个问题的好方法是什么?您知道适用的任何企业集成设计模式吗?

1 个答案:

答案 0 :(得分:2)

另一个想法是让主机B成为一个文件轮询消费者,它接收放在“/ path / to / shared / nfs / xyz”中的任何内容并处理它......这样你就不需要任何东西了从A到B的消息传递启动它,只是存在文件。

您仍然可以轻松使用Apache Camel's file component ...

之类的内容
from("file://path/to/shared/nfs/xyz").to(...);