首页 > 其他分享 >kafka消费模式

kafka消费模式

时间:2023-06-15 16:00:54浏览次数:30  
标签:消费 group auto 模式 kafka offset consumer id

消费者消费方式:订阅与分配

1、KafkaConsumer.subscribe():为consumer自动分配partition,有内部算法保证topic-partition以最优的方式均匀分配给相同group下的不同consumer。

2、KafkaConsumer.assign():为consumer手动、显示的指定需要消费的topic-partitions,不受group.id限制,相当与指定的group无效(this method does not use the consumer’s group management)。

注意:consumer.assign()是不会被消费者的组管理功能管理的,他相对于是一个临时的,不会改变当前group.id的offset,比如:在使用consumer.subscribe(Arrays.asList(topicName));时offset为20,如果再通过assign方式已经获取了消息后,在下次通过consumer.subscribe(Arrays.asList(topicName));来获取消息时offset还是20,还是会获取20以后的消息。

3、我们还可以配置如下属性auto.offset.reset来,设置消费者从分区的开头或者末尾进行消费数据。当然这也是有条件的。

//一般配置earliest 或者latest 值
props.put("auto.offset.reset", "latest");

 

注意:

只要不更改group.id,每次重新消费kafka,都是从上次消费结束的地方继续开始,不论"auto.offset.reset”属性设置的是什么

场景一:Kafka上在实时被灌入数据,但kafka上已经积累了两天的数据,如何从最新的offset开始消费?

(最新指相对于当前系统时间最新)

1.将group.id换成新的名字(相当于加入新的消费组)

2.网上文章写还要设置 properties.setProperty("auto.offset.reset", "latest”)

实验发现即使不设置这个,只要group.id是全新的,就会从最新的的offset开始消费--疑问: 换了新的group.id就不能从开始消费了?岂不是与下面场景二矛盾?

场景二:kafka在实时在灌入数据,kafka上已经积累了两天的数据,如何从两天前最开始的位置消费?

1.将group.id换成新的名字

2.properties.setProperty("auto.offset.reset", "earliest”)

场景三:不更改group.id,只是添加了properties.setProperty("auto.offset.reset", "earliest”),consumer会从两天前最开始的位置消费吗?

不会,只要不更改消费组,只会从上次消费结束的地方继续消费

场景四:不更改group.id,只是添加了properties.setProperty("auto.offset.reset", "latest”),consumer会从距离现在最近的位置消费吗?

不会,只要不更改消费组,只会从上次消费结束的地方继续消费

 

标签:消费,group,auto,模式,kafka,offset,consumer,id
From: https://www.cnblogs.com/gouhaiping/p/17483150.html

相关文章

  • Kafka概述
    定义Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka最新定义:Kafka是一个开源的分布式事件......
  • Kafka安装
    环境说明在安装Kafka之前,请确保已经安装了JDK和Zookeeper。运行Kafka,首先保证Java环境能正常使用,可执java-version查看。安装JDK环境下载jdk安装包curlhttps://download.oracle.com/java/20/latest/jdk-20_linux-x64_bin.tar.gz-ojdk-20_linux-x64_bin.tar.gz新建JDK......
  • 设计模式——建造者模式
    建造者模式定义:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示分离了部件的构造和装配,从而可以构造出复杂对象,适用于某个对象构造复杂的情况由于构造和装配解耦,不同构造器相同装配顺序也可以构造出不同的对象,相同的构造器不同的装配顺序也可以做......
  • 在 Apple silicon Mac 上 DFU 模式修复或恢复 macOS 固件
    搭载Apple芯片的Mac电脑DFU模式全新安装macOSVentura请访问原文链接:https://sysin.org/blog/apple-silicon-mac-dfu/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgMaccomputerswithApplesilicon,简称ApplesiliconMac,中文翻译为“搭载Apple芯片的M......
  • Mybatis中SqlNode的组合模式
    组合( Composite )模式就是把对象组合成树形结构,以表示“部分-整体”的层次结构,用户可以像处理一个简单对象一样来处理一个复杂对象,从而使得调用者无需了解复杂元素的内部结构。组合模式中的角色有:抽象组件(容器):定义了树形结构中所有类的公共行为,例如add(),remove()等方法。树叶:最终......
  • 第一集:代理模式、动态代理和面向方面
    Java代码1.PublicclassViewActionimplementsAction2.{3.publicvoiddoAction()4.{5.//做View的动作6.System.out.println(“Youcouldviewtheinformation……”);7.......
  • SK-II受核污染疑云解除,关键时刻物联网技术保障消费者健康安全
    SK-II近日就“神仙水”被指受到产地滋贺县核辐射污水影响作出回应。SK-II称,相关报道属于不实信息,目前源头新闻发布者已经删除相关消息。滋贺县政府此前已于2015年3月发布过相关声明,表示当地并未受到核辐射影响。SK-II同时表示,旗下所有产品和成分上市之前均经过安全性评估,遵守所在市......
  • 通过Kafka在ignite集群之间进行实时数据复制
    版本1.6的ApacheIgnite提供了一种基于KafkaConnect进行数据处理的新方法。KafkaConnect是ApacheKafka0.9中引入的一个新特性,它支持ApacheKafka和其他数据系统之间的可伸缩和可靠的流数据。它使得在内存中向您的可伸缩和安全的流数据管道中添加新系统变得非常容易。在本文中,我们将......
  • 对称点模式(symmetric dot pattern, SDP)-matlab版
    近年来,一种直观的信号表示方法--对称点模式(symmetricdotpattern,SDP)被用于信号分析和模式识别。与一些常规方法不同,SDP是一种基于极坐标系的图像表示方法,可以直接将原始信号转换为镜像对称雪花图像,实现简单,计算量小,且对噪声鲁棒。模式之间的识别和区分与信号之间的幅度和频率......
  • leetcode:vim模式下esc代码区失焦问题
    问题刷力扣时用的vim模式编码,当按下esc退出插入模式的时候,发现编辑的焦点直接从代码区退出了,还想继续往下敲代码就只能再次点鼠标原因浏览器使用了插件vimium,所以导致这个问题的出现。参考这里解决把插件设置力扣网站禁用就行,如果不想麻烦的关闭vimium插件的话。直接添加如......