【Kafka】(四)Kafka使用 Consumer 接收消息消费

本文介绍了Kafka Consumer的基本概念,如消费者、消费者组和位移,并详细讲解了消费者采用的拉取(poll)消费方式及其优势。此外,还提到了Consumer的常用参数和三种消费交付语义,并通过示例展示了单线程和多线程消费者组的设置。
摘要由CSDN通过智能技术生成

Consumer概要

consumer中的关键术语:
消费者(consumer):从kafka中拉取数据并进行处理
消费者组(consumer group):一个消费者组由一个或者多个consumer实例组成
位移(offset):记录当前分区消费数据的位置
位移提交(offset commit):将消费完成的消息的最大offset提交确认
位移topic(_consumer_offset):保存消费位移的topic

消费方式:(poll/push)

Kafka Consumer采用的是主动拉取broker数据进行消费的。一般消息中间件存在推送(server推送数据给consumer)和拉取(consumer主动取服务器取数据)两种方式,这两种方式各有优劣。

如果是选择推送的方式最大的阻碍就是服务器不清楚consumer的消费速度,如果consumer中执行的操作又是比较耗时的,那么consumer可能会不堪重负,甚至会导致系统挂掉。

而采用拉取的方式则可以解决这种情况,consumer根据自己的状态来拉取数据,可以对服务器的数据进行延迟处理。但是这种方式也有一个劣势就是服务器没有数据的时候可能会一直轮询,不过还好Kafka在poll()有参数允许消费者请求在“长轮询”中阻塞,等待数据到达(并且可选地等待直到给定数量的字节可用以确保传输大小)。

Consumer常用参数说明

在这里插入图片描述

Consumer程序开发

构建Consumer
Consumer有三种消费交付语义
1、至少一次:消息不会丢失,但可能被重复处理(实现简单)
2、最多一次:消息可能丢失可能会被处理,但最多只会被处理一次(实现简单)
3、精确一次:消息被处理并且只会被处理一次(比较难实现)

一个消费者组G1里只有一个消费者(单线程)

public class MyConsumer {
   
    public static void main(String[] args) {
   
        Properties prop = new Properties();
        prop.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.247.201:9092");
        prop.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); // 消息key反序列化器
        prop.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class);// 消息value反序列化器
        prop.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG,"30000"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值