从卡夫卡读取数据时,数据库连接丢失

时间:2018-07-13 20:58:33

标签: spring-boot apache-kafka kafka-consumer-api spring-kafka

我是Spring Kafka的新手,我通常会说Kafka。但是我尝试使用一个Kafka主题,然后使用接收到的事件填充数据库,所以我们有了这个:

Kafka主题->应用程序侦听器->数据库。

所以我想知道当由于某种原因失去与数据库的连接时应该采取什么方法;所以这个:

Kafka主题->应用程序侦听器(读取一个对象)X数据库。

尽管我的建议之一是停止列表器,然后在数据库恢复时以某种方式将其重新打开。我们已经从主题中阅读的元素还会发生什么?

数据集很大,因此从头开始阅读并不是一个选择。

我也不拥有Kafka制作人。我只是使用外部资源的消费者。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

  

丢失与数据库的连接时的处理方法

您不应在使用者代码中使用自动提交。

简短的答案是,如果您不提交数据库,则不应将使用的偏移量提交回Kafka。这样,在重试的情况下,您可以在主题的Kafka保留期内将数据推送到数据库中。

这种类型的“数据库重播”的常见模式使用压缩的Kafka主题,在该主题中,您可以保证保留每个唯一的Kafka消息密钥的最新值。