我在服务器启动时启动Kafka consumer。如果Kafka集群长时间(几个小时)宕机,对消费者会有什么影响?Kafka再次上线后会收到消息吗?
发布于 2019-12-12 10:54:15
这最终取决于您如何处理客户端中的连接异常。
如果在几次之后有一个断路器类型的逻辑retry+fail,那么消费循环就会停止。否则,如果您盲目地执行while(true)循环,那么使用者将继续尝试读取消息,并记录每个请求(心跳、获取或轮询)的错误
发布于 2019-12-12 14:24:55
当Kafka协议工作时,它们始终是客户端(在本例中是消费者),以请求/回复的方式开始与集群通信。这意味着如果集群宕机,消费者将仅在其下一个请求(可能是元数据请求或获取请求)时获得此状态。没有从代理到客户端的推送机制来告诉他们集群恢复正常工作。因此,它取决于消费者的逻辑以及它轮询获取消息的次数;正如@cricket_007已经提到的,它将记录错误。
发布于 2019-12-19 06:00:16
Kafka将消息和当前偏移值存储在磁盘中,时间在broker配置中定义为log.retention (默认值为168小时)。因此,在停机期间,您的消费者在每次尝试轮询时都会收到"Broker可能不可用“错误。当kafka上线时,如果停机时间小于log.retention时间,那么您的消费者将继续接收和消费消息,不会有任何损失。
https://stackoverflow.com/questions/59296749
复制相似问题