SpringBoot整合Kafka【02】- 发送消息的初体验一、新建Spring Boot项目 通过Spring In
一、新建Spring Boot项目
通过Spring Initializr脚手架创建SpringBoot项目,如下:
选择Spring Boot的版本(Ps:我这里是默认的)和所需依赖,如下:
二、配置文件
配置其实还是挺全面的,但我们刚开始只需要简单地配置下连接信息就可以了,不用关注生产者和消费者的配置(它们各有24个配置),只需要知道有这么个东西,如下:
spring:
# kafka配置
kafka:
# 连接地址
bootstrap-servers: 127.0.0.1:9092
# 消费者配置
# consumer:
# 生产者配置
# producer:
在前文中,我们是在本地用docker启动的kafka,这里的连接地址自然也就是127了。
三、发送消息测试
完成了基本的配置后,我们就可以编写一个简单的发送消息的案例来测试下整合是否成功,很简单地就发送一个“hello kafka”,如下:
@Resource
private KafkaTemplate<String, String> kafkaTemplate;
public void sendEvent(){
kafkaTemplate.send("hello-topic", "hello kafka");
}
直接在需要使用的地方注入KafkaTemplate,然后调用 send() 方法即可,这里只是简单测试,先简单穿两个参数,分别是topic和value。再写个测试方法调用测试下,如下:
@SpringBootTest
class KafkaDemoApplicationTests {
@Resource
private EventProducer eventProducer;
@Test
void test01() {
eventProducer.sendEvent();
}
}
执行成功之后,就可以在连接工具(Ps:安装参考01篇)里看到刚刚发送的消息了,如下:
这个让我们体会了下作为生产者如何发送消息,就是这么简单,只需要一个kafkaTemplate即可,所以在项目里整合Kafka其实就是干这么两件事:作为生产者发送事件Event(包含消息和数据)、作为消费者读取事件Event(包含消息和数据)。
四、熟悉概念
为了便于读者的后续学习,我们先来熟悉下在Kafka中涉及到的几个基本概念:生产者Producer、消费者Consumer、主题Topic、分区Partition、偏移量Offset。关于生产者和消费者大家已经有所认识,就不赘述了,而我则通过一个例子让大家更好地认识它们及其关系。
首先,我们可以将Kafka存储事件Event的地方看做一个图书馆,那么:
1.事件Event
就像是图书馆里的每一本书。
2.主题Topic
类似于图书馆的书架,每个书架上放置了特定类别的书籍。例如,一个书架上可能全是关于历史的书,另一个书架上可能全是关于科学的书。
3.分区Partition
可以看作是书架上的不同隔间,每个隔间里放置了一部分书籍。这样做的目的是为了更好地组织和管理书籍,使得查找和存取更加高效。
4.偏移量Offset
是每本书在书架上的具体位置编号。通过这个编号,你可以精确地找到某一本书,和索引的作用一样。
这样一来,当你需要查找某本书(事件)时,你首先会知道它在哪个书架(主题)上,然后找到具体的隔间(分区),最后通过位置编号(偏移量)准确地找到它。
五、小结
用案例帮大家熟悉之后,有这么几个知识点需要大家了解下:
- Kafka中,每个topic可以有一个或多个partition;
- 当创建topic时,如果不指定该topic的partition数量,那么默认就是1个partition;
- offset是标识每个分区中消息的唯一位置,从0开始;
转载自:https://juejin.cn/post/7407983735663181858