发布网友
发布时间: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深入使用~
「本着把自己知道的都告诉大家,如果本文对您有所帮助,点赞+关注鼓励一下呗~」