Kafka:springboot集成kafka收发消息

kafka环境搭建参考Kafka:安装和配置_moreCalm的博客-CSDN博客

1、springboot中引入kafka依赖

复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- kafkfa -->
    <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
</dependencies>

2、配置application.yml

复制代码
server:
  port: 9991
spring:
  application:
    name: kafka-demo
  kafka:
    bootstrap-servers: 192.168.200.130:9092
    producer:
      retries: 10
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: ${spring.application.name}-test
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

传递String类型的消息

3、controller实现消息发送接口

复制代码
package com.heima.kafkademo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    KafkaTemplate<String,String> kafkaTemplate;

    @GetMapping("/hello")
    public String addMessage(){
        kafkaTemplate.send("lakers-topic","湖人总冠军!");
        return "ok";
    }
}

4、component中实现接收类HelloListener

复制代码
package com.heima.kafkademo.component;

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

@Component
public class HelloListener {

    @KafkaListener(topics = "lakers-topic")
    public void onMessage(String msg){
        System.out.println(msg);
    }

}

5、测试

浏览器访问该接口并查看控制台

接收成功

传递对象类型的消息

思路:在传递消息时,将对象转为json字符串,在接收时再解析

1、controller实现发送

复制代码
package com.heima.kafkademo.controller;

import com.alibaba.fastjson.JSON;
import com.heima.kafkademo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    KafkaTemplate<String,String> kafkaTemplate;

    @GetMapping("/hello")
    public String addMessage(){
        User user = new User();
        user.setName("勒布朗");
        user.setAge(37);
        user.setGender("男");
        user.setJob("NBA球员");
        kafkaTemplate.send("lakers-topic", JSON.toJSONString(user));
        return "ok";
    }
}

2、component实现接收类

复制代码
package com.heima.kafkademo.component;

import com.alibaba.fastjson.JSON;
import com.heima.kafkademo.model.User;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

@Component
public class HelloListener {

    @KafkaListener(topics = "lakers-topic")
    public void onMessage(String msg){
        System.out.println(JSON.parseObject(msg, User.class));
    }

}

3、打印测试结果

相关推荐
计算机毕设指导68 小时前
基于SpringBoot校园学生健康监测管理系统【源码文末联系】
java·spring boot·后端·spring·tomcat·maven·intellij-idea
mysuking9 小时前
springboot与springcloud对应版本
java·spring boot·spring cloud
希望永不加班9 小时前
SpringBoot 数据库连接池配置(HikariCP)最佳实践
java·数据库·spring boot·后端·spring
yaoyouzhong9 小时前
基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战
java·spring boot·spring
姗姗的鱼尾喵10 小时前
Spring/SpringBoot 面试高频(含IOC/AOP/事务)
java·spring boot·面试
一个有温度的技术博主10 小时前
Redis AOF持久化:用“记账”的方式守护数据安全
redis·分布式·缓存
RATi GORI11 小时前
springBoot连接远程Redis连接失败(已解决)
spring boot·redis·后端
Zzxy11 小时前
Spring Boot 集成 Redisson 实现分布式锁
spring boot·redis
__土块__12 小时前
一次企业知识库同步系统改造复盘:从全量拉取到增量消息的演进与多级缓存一致性保障
kafka·多级缓存·缓存一致性·系统改造·知识库同步·增量消息·mysql binlog
用户83071968408213 小时前
Spring也会“选择困难”?五种方案帮你搞定@Autowired多bean注入
spring boot