关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
5年前关闭。
Improve this question
我正在构建一个 Java 应用程序,它将在电池供电、支持蜂窝的设备(顺便说一下,不是手机)上运行,并且需要向服务器发送命令。
这些命令采用 JSON 对象的形式,因此可以轻松地进行序列化和反序列化。
由于互联网连接可能不完全可靠,并且设备的电池可能会耗尽,我需要一种将命令保存到磁盘的方法,以防电池耗尽(在某些情况下,这可能会导调用源在没有警告的情况下关闭)。
这些命令每条可能“值”几欧元,所以我采取一切预防措施(当然在一定范围内)以确保没有命令丢失是很重要的。发送两次命令不是问题,因为每个命令都带有 GUID 标记,并且我的服务器将确保忽略重复项。队列可能包含多达一千条命令,但大多数时候它是空的。
我实际上正在寻找的是一个类似队列(FIFO)的对象,它具有一个后备文件存储,可以在瞬间崩溃中幸存下来。我需要能够查看下一行,并在处理完成后将其删除。
到目前为止,我一直在使用 MapDB 3.0,但是文档对于如何创建类似队列的对象有点困惑。此外,对于我想要实现的目标来说,这似乎有点多
最佳答案
你可以有一个文件目录。每条消息一个文件。文件名可以是时间戳或记录排序的名称。包含 1000 个文件的目录应该仍然可以正常运行。
关闭文件后,它应该被持久化到磁盘,尽管任何操作的确切安全程度取决于设备及其实现方式。
关于java - 在java中寻找一个崩溃安全队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39554943/