在java中寻找一个崩溃安全的队列

时间:2016-09-18 06:48:41

标签: java file crash queue mapdb

我正在构建一个Java应用程序,它将运行在电池供电,支持蜂窝的设备上(顺便说一下,不是手机),并且需要向服务器发送命令。 这些命令采用JSON对象的形式,因此可以轻松地序列化和反序列化。

由于互联网连接可能不完全可靠,并且设备的电池可能耗尽,我需要一种方法将我的命令保存到磁盘以防电池电量耗尽(在某些情况下,可能导致切换电源)在没有警告的情况下关闭。)

这些命令可以“价值”几欧元,所以我采取一切预防措施(当然在某些范围内)以确保没有命令丢失是很重要的。发送命令两次不是问题,因为每个命令都标记有GUID,我的服务器将确保忽略重复项。该队列最多可包含一千个命令,但大部分时间它都是空的。

我实际上正在寻找的是一个类似队列的(FIFO)对象,它有一个支持文件存储,可以在瞬间崩溃中存活。我需要能够查看下一行,并在处理完成后将其删除。

到目前为止,我一直在使用MapDB 3.0,但文档对于如何创建类似队列的对象有点混乱。此外,它似乎对我想要实现的目标有点多了

1 个答案:

答案 0 :(得分:1)

您可以拥有一个文件目录。每封邮件一个文件。文件名可以是记录订购的时间戳或名称。包含1000个文件的目录仍然可以正常运行。

关闭文件后,它应该保存到磁盘,但确切的操作安全程度取决于设备及其实现方式。