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

<dependency>
	<groupId>org.springframework.kafka</groupId>
	<artifactId>spring-kafka</artifactId>
	<version>2.2.6.RELEASE</version>
</dependency>

添加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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值