首页 文章

消费者在 Kafka 消费消息的方式有哪些?

提问于
浏览
5

如果在网络的某处“那边”有一个Kafka服务器,我会假设消费者可能有两种消费方式:

  • 首先“订阅”主题并实际告诉Kafka服务器它正在监听的位置,以便在生成新消息时,Kafka主动通过网络将消息发送给消费者 .

  • 消费者必须使用当前消息的偏移量来轮询Kafka服务器,询问是否有任何新消息 .

这是Kafka的工作原理,是可配置的选项吗?

1 回答

  • 2

    我正在将我的评论扩展为答案 .

    通过阅读consumer documentation,Kafka只支持你所描述的选项2 . 消费者有责任从Kafka服务器获取消息 . 在0.9.x.x消费者中,这是由poll() method完成的 . 消费者轮询Kafka服务器并返回消息(如果有) . 我认为他们选择避免支持选项1有几个原因 .

    • 它限制了Kafka服务器所需的复杂性 . 它负责将消息推送给消费者,它只保存消息并等待消费者获取消息 .

    • 如果Kafka服务器正在向消费者推送所有消息,那么它可能会压倒消费者 . 假设 生产环境 者正在将消息传递到Kafka服务器10 msg / sec,但某个消费者只能处理2 msg / sec . 如果Kafka服务器试图将收到的每条消息都推送到该消费者,消费者很快就会被收到的消息数量所淹没 .

    可能还有其他原因,但目前这些是我想到的两个原因 .

相关问题