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

标签 java file crash queue mapdb

关闭。这个问题不符合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/

相关文章:

python - 在文件命令 Python 中添加循环

ios - CCLabelTTF错误:无法识别的选择器已发送给类(class)

ios - 如何使用 native 崩溃报告在 Swift 4 中实现异常/错误处理?

java - 使用 Android 应用程序将文件上传到我的 Google API 项目

统计C程序中的注释数量

java - 无法在 Windows 上使用 kafka-run-class.bat 运行类

file - 从文件中读取 n 个字节的文本

google-chrome - 如何在 Chrome 上恢复 OneTab 旧数据?

java - 当子类在另一个包中时无法覆盖父类(super class)的抽象方法

java - 获取 HashMap 中元素子集的有效方法是什么?