栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kafka的高级应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kafka的高级应用

命令行工具 消费组管理

查看消费组:

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

查看消费组详细信息:

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group groupid

查看消费组当前的状态:

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group groupid --state

查看消费组内成员信息:

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group groupid --members	

删除消费组,如果有消费者在使用则会生效:

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group groupid
消费位移管理

重置消费位移,前提是没有消费者在消费:

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group groupid --all-topics --reset-offsets --to-earliest --execute
# --all-topics指定了所有主题
数据管道Connect 概述

Kafka是一个使用越来越广的消息系统,尤其是在大数据开发中(实时数据处理和分析)。为何集成其他系统和解耦应用,经常使用producer来发送消息到broker,并使用consumer来消费broker中的消息。kafka connect是到0.9版本才提供的并极大简化了其他系统与kafka的集成。kafka connect运用用户快速定义并实现各种connector,这些功能让大批量数据导入/导出kafka很方便。

在kafka connect中的重要的概念:

  • 连接器:实现了connect API,决定需要运行多少个任务,按照任务来进行数据复制,从worker进程获取任务配置并将其传递下去。
  • task:负责将数据移入或移出kafka。
  • worker进程:相当于connector和任务的容器,用于负责管理连接器的配置、启动连接器和连接器任务,提供REST API。
  • 转换器:kafka connect和其他存储系统直接发送或者接受数据之间转换数据。
独立模式-文件系统

场景:
以下示例使用到了两个connector,将文件source.txt中的内容通过Source连接器写入kafka主题中,然后将内容写入source.sink.txt中。

  • FileStreamSource:从source.txt中读取并发布到broker中。
  • FileStreamSink:从Broker中读取数据并写入到source.sink.txt文件中。

配置worker进程(connect-standalone.properties):

//kafka集群连接的地址
bootstrap.servers=localhost:9092
//格式转化类
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
//json消息中是否包含schema
key.converter.schemas.enable=true
value.converter.schemas.enable=true
//保存偏移量的文件路径
offset.storage.file.filename=/tmp/connect.offsets
//设定提交偏移量的频率
offset.flush.interval.ms=10000

配置source(connect-file-source.properties)

//配置连接器的名称
name=local-file-source
//连接器的全限定名称,设置类名称也是可以的
connector.class=FileStreamSource
//task数量
tasks.max=1
//数据源的文件路径
file=/tmp/source.txt
//主题名称
topic=mytopic2

配置sink(connect-file-sink.properties)

name=local-file-sink
connector.class=FileStreamSink
tasks.max=1
file=/tmp/source.sink.txt
topic=mytopic2

启动source连接器:

./connect-standalone.sh ../config/connect-standalone.properties ../config/connect-file-source.properties

启动sink连接器:

./connect-standalone.sh ../config/connect-standalone.properties ../config/connect-file-sink.properties

source写入文本:

echo "hello" >> /tmp/source.txt

查看sink文件:

cat /tmp/source.sink.txt
spring boot整合kafka

添加pom.xml


	org.springframework.kafka
	spring-kafka
	2.2.6.RELEASE

添加application.properties:

spring.kafka.producer.bootstrap-servers=localhost:9092
spring.kafka.consumer.bootstrap-servers=localhost:9092

消息的发送:

private KafkaTemplate template;
private static final String topic = "mytopic3";
@GetMapping("/send/{input}")
public String sendToKafka(@PathVariable String input) {
	this.template.send(topic,input);
	return "send success";
}

消息的接收:

@KafkaListener(id="",topics=topic,groupId="groupid")
public void Listener(String input) {
	sout(input);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/939867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号