如何perevent轮询从mysql数据库重复的数据

时间:2019-04-28 05:13:14

标签: mysql jpa apache-camel activemq

我在mysql数据库中有大量数据。我想从数据库中轮询数据并将其推入骆驼的activemq中。数据库与队列之间的连接每15分钟丢失一次。在连接中断期间,某些消息会丢失。我需要知道丢失了哪些消息才能再次从数据库中轮询它们。邮件不应发送多次。并且应该在数据库架构中进行任何更改。(我无法向我的数据库添加任何布尔状态字段)。

欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

从本质上讲,您需要在从源数据库中提取的数据中具有一些唯一的标识符。也许是已经定义为主键的任何东西。或者,也许表有一些时间戳字段。或者,某些字段组合可能是唯一的。

一旦确定,将数据放入目标时,请拒绝目标中已存在的任何密钥。您可以使用Camel的“幂等”功能,但是如果您能够检查目标数据库中的密钥,则可能不需要其他任何功能。

如果您必须决定要发送发送的内容,但无权从App#1访问远程数据库,则需要在防火墙。

即使连接不会每隔15分钟断开一次,您也需要执行此操作...因为您可能会因为其他原因而失败。

如果您可以为App#1建立一个幂等数据库,则另一种方法可能是将数据从本地数据库传输到其他本地表,然后从中读取数据。然后,您轮询该另一个表,并在发送成功时将其删除。 示例:

您似乎正在使用MySql。如果两个数据库都在MySql上,则可以使用Camel查看MySql data-replication,而不是使用自己的应用程序。