定期从MySQL获取数据

时间:2017-05-16 06:48:29

标签: java mysql sql activemq

基本上,我在MySQL中有一个数据表。 我想获取所有数据,然后发送它成为ActiveMQ的消息(表中1行的1条消息)。

但数据表每5秒自动更新一次。因此,表格中每5秒就有一些新数据。

如何在不发送已发送数据的情况下发送新数据? 而且我想我必须使用Thread.sleep(5000)才能使它无限循环?

这就是我得到的:

{{1}}

我的代码有效,但是在更新表时它没有再次发送消息......

1 个答案:

答案 0 :(得分:1)

您需要一种方法来区分已读取的行和尚未读取的行。

您可以“永远”运行程序并使用睡眠使其等待,或者您可以从cron作业运行程序。

您可以执行以下操作:

  • 存储您读取的最后一个ID(如果您需要停止程序并希望它下次保留,您可能需要将其写入文件)
  • 阅读ID为>的所有可用行您阅读的最后一个ID
  • 循环/或停止并稍后再次运行

或者将数据库中的行标记为read:

可能是有意义的
  • 阅读所有可用行
  • 对于每一行,更新数据库,设置列'read'= true或者其他东西 - 许多更新语句可能很慢
  • 循环/或停止并稍后再次运行