kafka代理在响应读/写请求时是否总是检查它是否是领导者

eblbsuwk  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(337)

我在我的producer上看到org.apache.kafka.common.errors.notleaderforpartitionexception,我知道当producer尝试向不是分区的引导者的代理生成消息时会发生这种情况。这是否意味着每次领导者完成一个写请求时,它都会首先检查其是否是领导者?如果是的话,这是否转化为zookeeper请求每个写入请求,以知道节点是否是领导者?

46scxncf

46scxncf1#

如何获取有关代理的元数据
producer向您在配置producer时提供的代理之一发送带有主题列表的元请求。
来自代理的响应包含这些主题中的分区列表以及每个分区的前导。生产者缓存这些信息,因此,它知道在哪里重定向消息。
生产者何时刷新元数据
我认为这取决于您使用的kafka客户端。ruby、java或其他kafka客户端之间有一些小的区别。例如,在java中:
生产者将在客户端初始化时获取元数据,然后根据过期时间进行周期更新。
当发生请求错误时,生产者还将强制更新元数据,例如 InvalidMetadataException .
但在ruby-kafka客户机中,通常在出错或初始化时刷新元数据。

相关问题