kafka生产者发送失败

发表于: 2023-11-28   最后更新时间: 2023-11-29 10:55:40   990 游览

我们现在有个业务,我们需要把数据发送给第三方kafka,但是现在发送的数量和对方收到的数量不一致,看日志发现有以下警告,但是没有报错:

2023-11-22T10:31:14.734+08:00  WARN [kafka-producer-network-thread | producer-22] [org.apache.kafka.clients.producer.internals.Sender:616]   - [Producer clientId=producer-22] Got error produce response with correlation id 4558322 on topic-partition XXX-7, retrying (0 attempts left). Error: NETWORK_EXCEPTION. Error Message: Disconnected from node 8 

2023-11-22T10:31:14.734+08:00  WARN [kafka-producer-network-thread | producer-22] [org.apache.kafka.clients.producer.internals.Sender:642]   - [Producer clientId=producer-22] Received invalid metadata error in produce request on partition XXX-7 due to org.apache.kafka.common.errors.NetworkException: Disconnected from node 8. Going to request metadata update now

我们的一条数据很大,大概5M左右(因为一条数据包含了4张图片的base64),一条数据量也很大。这个报错说是因为网络问题导致重试机制生效,以下是我的生产者配置:

kafka.producer.acks=1
kafka.producer.retries=1
kafka.producer.batch-size=10485760
kafka.producer.buffer-memory=1073741824
kafka.producer.properties.max.requst.size=10485760
kafka.producer.properties.max.block.ms=180000
kafka.producer.properties.linger.ms=20
kafka.producer.properties.delivery.timeout.ms=7200000

现在也无法确定是不是因为重试次数过多,但是仍有问题,最终导致数据丢失。
求各位大佬解答啊,孩子实在没办法了。。

发表于 2023-11-28
添加评论

5M的消息,就不要批处理了:

# 较小的批次大小有可能降低吞吐量(批次大小为0则完全禁用批处理)
batch.size=0

其次,既然已经生产超时,反复重试了,说明已经到了瓶颈。降低向kafka发送速度,防止阻塞而导致的超时,进而重试,最后丢消息。

-> 半兽人 1年前

批次大小设置为0,意思是说只要有消息过来就直接发送么,是否还会存到缓存中呢

半兽人 -> 1年前

是的,直接发,不会了。

-> 半兽人 1年前

好 感谢大佬,之后我再试试

你的答案

查看kafka相关的其他问题或提一个您自己的问题