我有两个java进程,我希望它们彼此完全分离。
我认为最好的方法是让一个人将数据写入文件,另一个人从该文件中读取数据(第二个也可能要写入文件说它处理了该行)。
我设想的问题是对文件的同时访问。我可以使用一个很好的简单模式来解决这个问题吗?是否有一个处理这种功能的库?
描述它的最佳方式是使用文件实现的简单直接消息传递机制。 (比JMS简单)。
谢谢Dan
答案 0 :(得分:1)
如果你想要一个简单的解决方案,你可以假设“重命名文件”是一个原子操作(这不完全正确),每个进程都可以在读取或写入文件时重命名该文件,并在重命名时重命名它结束了。另一个将找不到该文件,并将等到文件出现。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您没有锁定基于文件的解决方案,数据库可以解决您的问题 每条记录都是写作过程写的一行。记录中的单个列将不受影响,并且读取过程将使用它来指示它使记录变红。
当然,你必须在表变大或分区之前处理表的清理,这样读取过程就很容易在其中查找信息。
如果你必须使用一个文件 - 你可以想到另一个文件只有读者进程读取的记录的ID
- 这样你就不需要在同一个文件上同时写入进程了
答案 3 :(得分:0)
您要求的功能正是JMS所做的。 JMS是一个具有许多实现的API。你能不能只使用轻量级的实现?我不明白为什么你认为这是“复杂的”。当你有可靠地实施解决方案时,你会发现处理所有边缘情况并非易事。
答案 4 :(得分:0)
如果我不明白你的问题,请纠正我......
你为什么不看文件锁?当程序获得锁定时,另一个程序等待锁定被释放