-1

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

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

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

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

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

4

1 回答 1

1

你可以有一个文件目录。每条消息一个文件。文件名可以是时间戳或记录排序的名称。包含 1000 个文件的目录应该仍然可以正常运行。

关闭文件后,它应该被持久化到磁盘,尽管任何操作的确切安全程度取决于设备及其实现方式。

于 2016-09-18T07:10:31.343 回答