Spring boot 从Kafka读取时数据库连接丢失

Spring boot 从Kafka读取时数据库连接丢失,spring-boot,apache-kafka,kafka-consumer-api,spring-kafka,Spring Boot,Apache Kafka,Kafka Consumer Api,Spring Kafka,我对《春天卡夫卡》还不熟悉,一般来说我会说《卡夫卡》。但我试图使用一个卡夫卡主题,然后用接收到的事件填充数据库,因此我们有: 卡夫卡主题->应用程序侦听器->数据库 所以我想知道当数据库的连接由于任何原因而丢失时,该怎么办;因此: Kafka主题->应用程序侦听器(读取一个对象)X数据库 我的一个建议是停止列表器,然后在数据库恢复时以某种方式重新打开它。我们已经从主题中读到的元素会发生什么 数据集非常大,所以从一开始就读取数据并不是一个真正的选项 我也不拥有卡夫卡制作人。我只是一个使用外部资源的

我对《春天卡夫卡》还不熟悉,一般来说我会说《卡夫卡》。但我试图使用一个卡夫卡主题,然后用接收到的事件填充数据库,因此我们有:

卡夫卡主题->应用程序侦听器->数据库

所以我想知道当数据库的连接由于任何原因而丢失时,该怎么办;因此:

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

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

数据集非常大,所以从一开始就读取数据并不是一个真正的选项

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

有什么建议吗

当与数据库的连接丢失时,采取什么方法

您不应该在消费代码中使用自动提交

简单的回答是,如果不提交到数据库,则不应该将消耗的偏移提交回Kafka。这样,在重试的情况下,您就可以将主题的Kafka保留期推送到数据库中


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

哪个数据库?你熟悉卡夫卡连接框架吗?我不熟悉。我要看一看。谢谢,我们可以停下来开始听卡夫卡吗?我需要我们能控制它吗?只是我的疑问@cricket\u 007确切地说,这只是我脑子里闪过的想法,因为我不知道如何解决这个问题。你应该读一下卡夫卡消费群体是如何运作的。如果使用相同的组id重新启动进程,它将仅从该偏移量开始,而不是从主题的开头开始。如果让代码自动提交偏移量,那么由于各种原因,消息可能无法到达数据库,而不仅仅是数据库停机