让两个长时间运行的进程通过文本文件相互"talk"



我有两个(Java)进程在不同的jvm上重复运行。第一个人经常找到一些"信息",并需要将其存储在某个地方。第二个进程定期读取这些信息来处理它。这些间隔或多或少是随机的,因此进程1可能会发现三条信息,直到进程2读取它们,反之亦然。

我的方法是将这些信息写入文本文件。但我担心追加和读取文本文件意外地发生在同一时间,使我遇到锁。但是为每条信息写一个新的文本文件似乎有点多余。

更好的解决方案是什么?

编辑:对不起,我没有说清楚:java进程在不同的jvm中运行。他们不能直接看到对方

你可以让这个工作,只要你小心处理文件,你没有很高的更新率,例如每秒10次更新。

注意:你可以用文件重命名来代替锁。

更好的解决方案是什么?

Just about anything, SO不是用来推荐东西的,但在这种情况下,我可以推荐任何没有更具体要求的东西。例如,我可以推荐我的库Chronicle Queue,因为它是我写的,我确信它可以做你想做的事情,但是有很多可能的选择。

我每分钟发送一行文本。

因此您可以为每条消息写一个临时文件,完成后重命名它。消费者可以有一个目录监视程序,这样它就会知道您已经这样做了。用户可以在完成后删除文件。这有一个开销,但是小于10ms。

如果你想保存所有消息的记录,生产者也可以写入一个日志文件

最新更新