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、打印测试结果

相关推荐
坚定信念,勇往无前17 分钟前
Spring Boot中整合Flink CDC 数据库变更监听器来实现对MySQL数据库
数据库·spring boot·flink
桃林春风一杯酒34 分钟前
HADOOP_HOME and hadoop.home.dir are unset.
大数据·hadoop·分布式
坚定信念,勇往无前1 小时前
Spring Boot 如何保证接口安全
spring boot·后端·安全
尚学教辅学习资料2 小时前
基于SpringBoot+Vue+uniapp的高校招聘小程序+LW参考示例
spring boot·uni-app·招聘系统
m0_748247554 小时前
springboot中配置logback-spring.xml
spring boot·spring·logback
m0_748250034 小时前
springboot使用logback自定义日志
java·spring boot·logback
程序猿熊跃晖4 小时前
多环境日志管理:使用Logback与Logstash集成实现高效日志处理
spring boot·elk·logback
KingDol_MIni4 小时前
Spring Boot 集成 T-io 实现客户端服务器通信
java·服务器·spring boot
后端码匠5 小时前
Spring Boot3+Vue2极速整合:10分钟搭建DeepSeek AI对话系统
人工智能·spring boot·后端
计算机-秋大田5 小时前
基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)
java·开发语言·spring boot·后端·spring·课程设计