文章目录
前言
上一篇文章我们把Kafka的集群环境搭建好了,这一次我们看下使用Springboot如何整合Kafka呢
一、创建Springboot工程
使用Springboot最便捷的创建工程的方法,老生常谈的内容,我们就不贴图了,
1、选择Springboot Initializr 点击next。
2、填写工程名以及选择Java版本,点击next。
3、选择两个依赖,WEB->Spring Web和Messaging->Spring for Apache Kafka。
4、再点击next,点击Finish,创建完成
5、选择项目右击,选择NEW ->创建Module,同样的流程,重复两次,分别创建Consumer和Producer。
此时的项目结构:
二、生产者
1.编写配置文件application.properties
代码如下(示例):
server.port=8088
# 配置kafka集群的broker地址,多个地址用逗号隔开
spring.kafka.bootstrap-servers=192.168.201.129:9092,192.168.201.131:9092,192.168.201.132:9092
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
2.创建ProducerController
代码如下(示例):
package com.chenan.producer.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class ProducerController {
@Resource
private KafkaTemplate<String,Object> kafkaTemplate;
@RequestMapping("send")
public String sendMess(String mess){
// 参数为topic名,发送的信息
kafkaTemplate.send("test1",mess);
return "success";
}
}
三、消费者
1. 编写配置文件application.properties
server.port=8089
# 配置kafka集群的broker地址,多个地址用逗号隔开
spring.kafka.bootstrap-servers=192.168.201.129:9092,192.168.201.131:9092,192.168.201.132:9092
# group-id可以在节点中kafka目录下config中的consumer.properties中查看
spring.kafka.consumer.group-id=test-consumer-group
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval=1000
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
2.创建ConsumerController
package com.chenan.consumer.controller;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;
@Component
public class ConsumerController {
@KafkaListener(topics = "test1")
public void reception(ConsumerRecord<?,?> record){
System.out.println(String.format("topic is %s, offset is %d, value is %s",record.topic(),record.offset(),record.value()));
}
}
四、测试
分别启动producer和consumer两个工程。
浏览器访问:http://localhost:8088/send?mess=hello
观察Consumer的控制台,如果出现以下打印,证明成功了
总结
以上就是我今天跟大家分享的全部内容,欢迎各位大神留言沟通。