运行融合Kafka4.1.1社区。
我有。。。
最小同步副本数=2
主题:1分区,副本计数3
总共3个经纪人。
producer设置为acks=-1
所有其他生产者设置都是默认设置。
我启动了我的应用程序,当它开始给Kafka写记录的时候,我故意找了一个经纪人,我立刻得到: org.apache.kafka.common.errors.NetworkException: The server disconnected before a response was received.
基于上述设置。producer write()是否应该成功执行此操作而不抛出错误?
澄清
我故意杀了一个经纪人
这似乎只发生在领导者经纪人被杀的情况下?
2条答案
按热度按时间oaxa6hgo1#
没有看到完整配置。还有日志信息,很难说,还是。。
在Kafka,所有的写作都要经过领导人分区。在你的背景下,三个经纪人中,你杀了一个。因此,应该可以成功地写入剩下的2个并获得确认。但是,如果被杀死的代理是leader节点,则可能会导致异常。
从文档中:
acks=所有这一切意味着领导者将等待全套同步副本确认记录。这保证了只要至少有一个同步副本保持活动状态,记录就不会丢失。这是最有力的保证。
在任何情况下,您都可以将retries设置为大于0的值,并查看其行为-应该选出一个新的领导人,并且您的写入最终应该成功
rkue9o1l2#
用于kafka binder for azure eventhub for kafka的spring云流
例外情况:
解决方案:设置空闲时间、重试计数、重试退避时间-
参考文献:
http://kafka.apache.org/090/documentation.html (readhttp://kafka.apache.org/090/documentation.html#producerconfigs)
日志:
新建-