深入理解Kafka核心设计及原理(三):消费者

本文深入探讨Kafka消费者的消费组概念,解释消息消费过程,包括位移提交、消费模式,特别是自动提交可能导致的重复消费问题,以及再均衡的原理和影响。文章还提到了Kafka消费者的重要参数和使用方法。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
 转载请注明出处:https://blog.csdn.net/zjdxr-up/p/16114877.html

深入理解Kafka核心设计及原理(一):初识Kafka

深入理解Kafka核心设计及原理(二):生产者

3.1 消费者与消费组

消费者(Consumer)负责订阅Kafka 中的主题(Topic), 并且从订阅的主题上拉取消息。与其他一些消息中间件不同的是: 在Kafka 的消费理念中还有一层消费组(Consumer Group)的概念, 每个消费者都有一个对应的消费组。 当消息发布到主题后, 只会被投递给订阅它的每个消费组中的一个消费者。

每一个分区只能被一个消费组中的一个消费者所消费。

对于消息中间件而言,一般有两种消息投递模式:点对点(P2P, Point-to-Point)模式和发布/订阅(Pub/ Sub)模式。点对点模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息。发布订阅模式定义了如何向 一个内容节点发布和订阅消息,这个内容节点称为主题(Topic) , 主题可以认为是消息传递的中介,消息发布者将消息发布到某个主题,而消息订阅者从主题中订阅消息。主题使得消息的订阅者和发布者互相保持独立,不需要进行接触即可保证消息的传递,发布/订阅模式在消息的一对多广播时采用。Kafka 同时支待两种消息投递模式,而这正是得益于消费者与消费组模型的契合:

• 如果所有的消费者都隶属于同一个消费组,那么所有的消息都会被均衡地投递给每一个消费者,即每条消息只会被一个消费者处理,这就相当于点对点模式的应用。

• 如果所有的消费者都隶属于不同的消费组,那么所有的消息都会被广播给所有的消费者,即每条消息会被所有的消费者处理,这就相当于发布/订阅模式的应用。

消费组是一个逻辑上的概念,它将旗下的消费者归为 一类,每一个消费者只隶属于一个消费组。每一个消费组都会有一个固定的名称,消费者在进行消费前需要指定其所属消费组的名称,这个可以通过消费者客户端参数group.id来配置,默认值为空字符串。

3.2 消息消费过程及代码

一个正常的消费逻辑需要具备以下几个步骤:

(1) 配置消费者客户端参数及创建相应的消费者实例。

(2) 订阅主题。

(3)拉取消息并消费。

(4) 提交消费位移。

(5)关闭消费者实例。

public class KafkaConsumerAnalysis {
 public static final String brokerList = "localhost:9092";
 public static final String topic = "topic-demo";
 public static final String groupid = "g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值