【问题标题】:how to perevent polling duplicated data from mysql database如何防止从mysql数据库中提取重复数据
【发布时间】:2019-04-29 17:59:07
【问题描述】:

我在 mysql 数据库中有大量数据。我想从数据库中轮询数据并将它们推送到骆驼的 activemq 中。数据库和队列之间的连接将每 15 分钟丢失一次。一些消息在连接中断期间丢失。我需要知道哪些消息丢失了才能从数据库中再次轮询它们。消息不应发送超过一次。这应该在不更改数据库架构的情况下完成。(我无法将任何布尔状态字段添加到我的数据库中)。

欢迎提出任何建议。

【问题讨论】:

    标签: mysql jpa apache-camel activemq


    【解决方案1】:

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

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

    如果您必须决定发送的内容,但无法从 App #1 访问您的远程数据库,则您需要在另一端保留一份记录防火墙。

    即使连接不是每 15 分钟中断一次,您也需要这样做……因为您可能会因其他原因出现故障。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 2018-12-29
      • 2019-07-24
      • 2011-03-28
      • 1970-01-01
      相关资源
      最近更新 更多