一起来学kafka之整合SpringBoot基本使用

发布网友 发布时间:2024-12-20 15:19

我来回答

1个回答

热心网友 时间:2024-12-20 16:41

目前在出一个Kafka专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~

本节给大家讲一下Kafka如何整合SpringBoot以及它的基本使用~

好了, 废话不多说直接开整吧~

项目搭建

同样的,需要我们搭建一个maven工程,整合非常的简单,需要用到:

来一起看下完整的pom.xml:

配置也很简单application.yml

然后新建一个启动类,看下控制台是否成功链接了Kafka,在启动之前别忘了开启我们的Kafka集群哦~

基本使用

先从一个简单的例子,来快速体验一下Kafka,新建HelloController

我们通过KafkaTemplate进行消息的发送, 通过@KafkaListener进行消息的消费,我们可以指定消费者ID以及监听的topic,请求localhost:8081/hello观察控制台的变化。请求后,发现消息发送和接收的非常快,我们也可以观察UI后台的消息详情,同步对比

topic创建

之前我们的topic是在UI后台创建的,那么在SpringBoot中如何创建呢? 下面我们试着发送一个不存在的topic

请求之后,观察控制台以及管理后台,发现并没有报错,并且给我们自动创建了一个topic,在自动创建下,默认的参数是:

如果我想手动创建呢?我们可以通过NewTopic来手动创建:

如果要更新呢?也非常的简单

注意这里的参数只能+不能-

那么又有小伙伴问了,这种方式太简单了,如果我想在代码逻辑中来创建呢?我们可以通过AdminClient来手动创建

观察下管理后台,发现topic都创建成功了~

获取消息发送的结果

有时候我们发送消息不知道是不是发成功了,需要有一个结果通知。有两种方式,一种是同步一种是异步

同步获取结果异步获取Kafka事务

同样的,消息也会存在事务,如果第一条消息发送成功,再发第二条消息的时候出现异常,那么就会抛出异常并回滚第一条消息,下面通过一个简单的例子体会一下

默认情况下,Spring-kafka自动生成的KafkaTemplate实例,是不具有事务消息发送能力的。我们需要添加transaction-id-prefix来激活它

启动之后,观察控制台的变化~ ,除此之外,还可以使用注解的方式@Transactional来开启事务

结束语

下节带大家看下SpringBoot整合Kafka深入使用~

「本着把自己知道的都告诉大家,如果本文对您有所帮助,点赞+关注鼓励一下呗~」

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com