需要更改 Kafka Producer 配置的哪些参数,以便生产者应该: 1)重试 n 次 2)在同一消息的 n 间隔后,以防代理关闭。
我需要处理与此相关的情况: https ://github.com/rsyslog/rsyslog/issues/1052
需要更改 Kafka Producer 配置的哪些参数,以便生产者应该: 1)重试 n 次 2)在同一消息的 n 间隔后,以防代理关闭。
我需要处理与此相关的情况: https ://github.com/rsyslog/rsyslog/issues/1052
您可以将“重试次数”设置为 n(次数)。但是,您还需要研究其他可能因此受到影响或无法使其生效的配置是不够的。
1)如果生产者有acks = 0,那么它将不起作用。因为 acks = 0 → 生产者不等待任何类型的确认。在这种情况下,不能保证经纪人已收到记录。重试配置不会生效,因为无法知道是否发生任何故障。
2) 如果您正在寻找事件的有序交付,那么您需要将max.in.flight.requests.per.connection设置为 1。
3) retry.backoff.ms - 在尝试重试对给定主题分区的失败请求之前等待的时间量。这避免了在某些故障情况下在紧密循环中重复发送请求。
4) request.timeout.ms - 配置控制客户端等待请求响应的最长时间。如果在超时之前没有收到响应,客户端将在必要时重新发送请求,如果重试次数用尽,则请求失败。
5) delivery.timeout.ms - 在调用 send() 返回后报告成功或失败的时间上限。这限制了记录在发送之前将被延迟的总时间、等待代理确认的时间(如果需要)以及可重试发送失败所允许的时间。如果遇到不可恢复的错误,重试次数已用尽,或者记录被添加到到达较早交付到期期限的批次中,生产者可能会报告未能在此配置之前发送记录。
参考链接:https ://kafka.apache.org/documentation/#producerconfigs
我不确定您是否真的可以控制生产者端的重试次数。
让我把我的理解放在这里。如果在此超时过去之前未收到响应,则生产者将在“request.timeout.ms”之后触发第一次重试,并且后续重试将以“retry.backoff.ms”的间隔进行,直到您达到“delivery.timeout” 。小姐'
您可以在此处找到更多详细信息https://kafka.apache.org/documentation/#producerconfigs