spring boot集成kafka简单实用

 

先导入spring boot整合kafka的依赖

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

然后是application.yml中关于kafka的配置

 1 spring:
 2   kafka:
 3     bootstrap-servers: ip:端口 #kafka服务器地址 多个以,号隔开
 4     #生产者配置
 5     producer:
 6       batch-size: 16384  #每次批量发送信息的数量
 7       buffer-memory: 33554432 #达到该缓冲区大小就发送数据
 8       key-serializer: org.apache.kafka.common.serialization.StringSerializer #key的序列化器
 9       value-serializer: org.apache.kafka.common.serialization.StringSerializer #value的序列化器
10     #消费者配置
11     consumer:
12       group-id: test #消费者分组id,同一个分组的消费者不会读取到同一个消息
13       enable-auto-commit: true #启用自动提交偏移量
14       auto-commit-interval: 100 #设置偏移量提交间隔
15       key-deserializer: org.apache.kafka.common.serialization.StringDeserializer #key的反序列化器
16       value-deserializer: org.apache.kafka.common.serialization.StringDeserializer #value的反序列化器
17 
18 #自定义主题名,在代码中可以读取,方便修改主题
19 topic: testTopic

这是基础配置,我生产者和消费者这里都是同一个工程进行测试了,如果是两个不同的工程,只写生产者或消费者的配置就行

 1 @Component
 2 public class KafkaProducer {
 3 
 4     @Autowired
 5     private KafkaTemplate<String,Object> kafkaTemplate;
 6 
 7     @Value("${topic}")
 8     private  String topic;
 9 
10     public  void sendMessage(String message){
11          kafkaTemplate.send(topic,message);
12     }
13 
14 }

这里新建了一个kafka生产者类用于发送信息到kafka,并且交给了spring 管理,在我们需要使用的地方直接注入进来即可.

这个KafkaTemplate<>类是spring boot提供的模板类,封装了关于kafka的操作.

 

kafka消费者

1 @Component
2 public class KafkaConsumer {
3 
4     @KafkaListener(topics = {"${topic}"})
5     public void getMessage(String message){
6         System.out.println(message);
7     }
8 
9 }

同样交由spring管理,然后使用@KafkaListener注解,定义要监听的主题,至于{"${topic}"}这个是读取配置文件中的topic配置项,也是我所定义的主题,但监听到有信息时,

就会调用这个方法,将信息作为一个字符串参数传递进来,里面就可以写你的业务逻辑了.

 

kafka大致使用就是这样,很多细节配置,暂时也不清楚,有机会在补充吧 

 

posted @ 2020-03-04 19:19  沙漠里的橘子皮  阅读(1042)  评论(0编辑  收藏  举报