我在重复运行的不同JVM上有两个(Java)进程。第一个经常发现一些信息"并需要将它存储在某个地方。第二个过程会定期读取此信息以进行处理。区间或多或少是随机的,因此进程1可以找到三条信息,直到进程2读取它们,反之亦然。
我的方法是将此信息写入文本文件。但我担心附加和读取文本文件会意外地同时发生,所以我遇到了锁。但是为每条信息写一个新的文本文件似乎有些过分。
什么是更好的解决方案?
编辑:很抱歉,我没有说清楚:java进程在不同的JVM中运行。他们无法直接看到对方。答案 0 :(得分:2)
如果您对文件处理非常谨慎并且没有较高的更新率,则可以使其正常工作每秒10次更新。
注意:您可以使用文件重命名而不是锁定来执行此操作。
什么是更好的解决方案?
几乎任何东西,SO都不是推荐的东西,但在这种情况下,我可以推荐几乎没有更具体要求的东西。我可以推荐我的库Chronicle Queue,因为我写了它,我确信它可以做你想要的,但是有很多可能的选择。
我每分钟发送一行文字。
因此,您可以为每条消息编写临时文件,完成后重命名。消费者可以拥有目录监视器,因此只要您完成此操作就知道了。消费者可以在完成后删除该文件。这有一个开销但不到10毫秒。
如果要保留所有消息的记录,生产者也可以写入日志文件。