【发布时间】:2016-09-02 10:56:02
【问题描述】:
直到最近,我认为生产者、领导者选举和元数据的过程是这样的:
- 生产者发布到已关闭的领导代理,这将失败。
- 生产者尝试了几次(或零次,具体取决于配置)。
- 最终 Producer 将“失败”发布该消息。
- 这将触发 Producer 联系代理以获取新的元数据块,以便它可以找到新的领导者并继续。
但是我观察到的是 Producer 在用尽重试后阻塞并且在元数据“自动”刷新之前不做任何事情。此刷新将基于此属性中配置的时间(来自 Apache 的 Kafka 文档):
metadata.max.age.ms:以毫秒为单位的时间段,在此之后我们强制刷新元数据,即使我们没有看到任何分区领导层更改以主动发现任何新代理或分区。
所以基本上,如果生产者碰巧在元数据自身到期的时间附近发生阻塞,生产将很快恢复。但是,如果 Producer 在最后一次自动刷新发生几秒钟后阻塞,考虑到该属性的默认值为 5 分钟,那么 Producer 几乎会一直被阻塞。
我有什么遗漏或理解不正确吗?
谢谢。
【问题讨论】:
标签: apache-kafka