让两个长 运行 进程 "talk" 通过文本文件互相传递

Let two long running processes "talk" to each other by text files

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

我的做法是将这些信息写入文本文件。但是我担心附加和读取文本文件意外地同时发生,所以我 运行 陷入了锁。但是为每条信息编写一个新的文本文件似乎有点过分了。

什么是更好的解决方案?

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

只要您小心处理文件并且没有高更新率,例如每秒 10 次更新。

注意:您可以通过文件重命名而不是锁定来完成此操作。

What would be a better solution?

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

I am sending about one line of text every minute.

所以你可以为每条消息写一个临时文件,完成后重命名。消费者可以有一个目录观察器,所以它会在您完成此操作后立即知道。消费者可以在完成后删除文件。这会产生开销,但不会超过 10 毫秒。

如果要保留所有消息的记录,生产者也可以写入日志文件。