当代理重新启动时,C++ RdKafka::Producer 丢失排队消息

当代理重新启动时,C++ RdKafka::Producer 丢失排队消息

测试我的 Kafka 生产器时,我发现它无法承受短暂的 Kafka 中断。

我停止服务器,暂停几分钟,然后重新启动,同时我的客户端生成消息。服务器启动后,出现事件回调“分区数从 1 更改为 0”和“所需分区不再可用(本地:未知分区)”和“主题不存在(代理:未知主题或分区)”。然后,所有离线缓冲消息上都出现许多传递报告回调错误 - MSG_STATUS_NOT_PERSISTED“代理:未知主题或分区”。几秒钟后出现积极的传递报告回调 - MSG_STATUS_PERSISTED,并按预期生成以下消息。

我尝试将 auto.create.topics.enable 服务器属性更改为“true”,这很有帮助 - 现在代理重新启动时不会丢失任何消息。

我可以做些什么来使用 auto.create.topics.enable=false 并且不丢失消息吗?

在 WSL2 Ubuntu 22.04.1 上运行 kafka_2.13-3.4.0,使用 C++ 库 librdkafka v2.1.1。设置为:delivery.timeout.ms=86400000、retries=2147483647、acks=all,主题以复制因子 1、分区 1 创建。

相关内容