java - 应用程序重启时的文件读取偏移量

标签 java oop jakarta-ee

问题更多的是设计部分而不是编码。

我有一个包含手机号码的巨大文件,所以我们要做的就是一次性读取 50 个号码并更新数据库表 startOffset=0endOffset=50 中的偏移量。 现在,开始一一向号码发送短信,完成后, 从文件中选取另外 50 个号码,并将偏移量更新为 startOffset=51endOffset=100,现在开始发送短信,假设我已经发送短信到 66 个偏移量,当由于多种原因突然断电或应用程序重新启动时,就会出现问题。

现在,当应用程序重新启动时,我将不知道我必须再次启动的偏移量(即在我们的例子中为 67)。我会发现我在 51 到 100 block 中丢失了,所以我能做的就是从 51 开始再次发送短信,但这是错误的,因为短信将发送两次到我们已经发送的号码。

另外,我可以在发送每条短信后将currentPointer更新到DB,但这会使系统变慢。

有人可以建议最好的方法吗?

最佳答案

如果您想确保重新启动时没有数字被处理两次,那么您需要为每个处理的数字写入持久存储,无论是数据库还是文件。如果写入操作的执行速度对于您的要求来说太慢,请找到一种更快的方法来持久化它,例如另一个表、文件或不同的数据库系统。

关于java - 应用程序重启时的文件读取偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30138074/

相关文章:

java - 使用 setter 和 getter JAVA 访问另一个类的变量

java - 从命令行运行 java 类,包括 jar 中的库

javascript - jQuery AJAX 问题?或者 JS OOP 范围问题?

c# - 为什么调用哪个接口(interface)方法很重要?

java - 从 JSF 中的数据表获取选定行数据

java - 在android中分割多行字符串

java - 在 Linux 上执行 Java 程序时使用 chmod +x 后权限被拒绝

PHP OOP 在子类中重新声明私有(private)方法/函数

java - 安全 Java EE Web 应用程序和 Seam 的设计指南

java - 在 Linux 上执行 grep 命令并捕获结果