当前位置: 首页 > article >正文

SpringBoot集成kafka-监听器注解

SpringBoot集成kafka-监听器注解

  • 1、application.yml
  • 2、生产者
  • 3、消费者
  • 4、测试类
  • 5、测试

在这里插入图片描述

1、application.yml

在这里插入图片描述

#自定义配置
kafka:
  topic:
    name: helloTopic
  consumer:
    group: helloGroup

2、生产者

package com.power.producer;

import com.power.model.User;
import com.power.util.JSONUtils;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.Date;

@Component
public class EventProducer {

    @Resource
    private KafkaTemplate<String,Object> kafkaTemplate;

    public void sendEvent2(){
        User user = User.builder().id(10001).phone("15676767676").birthday(new Date()).build();
        String userJson = JSONUtils.toJSON(user);
        kafkaTemplate.send("helloTopic",userJson);
    }

}

3、消费者

package com.power.consumer;

import com.power.model.User;
import com.power.util.JSONUtils;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.support.KafkaHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;

import java.util.function.Consumer;

@Component
public class EventConsumer {

    //采用监听的方式接收事件(消息,数据)
    @KafkaListener(topics = {"${kafka.topic.name}"},groupId="${kafka.consumer.group}")
    public void onEvent3(String userJson,
                        @Header(value=KafkaHeaders.RECEIVED_TOPIC) String topic,
                        @Header(value=KafkaHeaders.RECEIVED_PARTITION_ID) String partition,
                        ConsumerRecord<String,String> record){
        User user =JSONUtils.toBean(userJson,User.class);
        System.out.println("读取/消费到的事件,user:"+user+",topic:"+topic+",partition:"+partition);
        System.out.println("读取/消费到的事件:"+record.toString());

    }

}

在这里插入图片描述

4、测试类

package com.power;

import com.power.producer.EventProducer;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
public class SpringBoot02KafkaBaseApplication {

    @Resource
    private EventProducer eventProducer;

    @Test
    void sendEvent2(){
        eventProducer.sendEvent2();
    }

}

5、测试

先启动消费者监听
再启动生产者发送消息
消费者依然可以正常监听到消息:
在这里插入图片描述


http://www.kler.cn/a/281005.html

相关文章:

  • C#实现数据采集系统-数据反写(2)消息内容处理和写入通信类队列
  • FL Studio24苹果mac电脑破解绿色版安装包下载
  • pyinstaller pyqt5 pytest打包后报错no module unittest.mock
  • polarctf靶场[WEB]Don‘t touch me、机器人、uploader、扫扫看
  • NLP从零开始------15.文本中阶序列处理之语言模型(3)
  • anaconda的power shell和prompt有什么区别?
  • 使用dx工具将jar和class打包成dex
  • 高级问题解决查询搜索网址
  • CMake构建学习笔记10-OsgQt库的构建
  • 《黑神话悟空》:国产3A游戏的崛起与AI绘画技术的融合
  • 【Linux】CodeServer:云IDE部署
  • 使用 ASP.NET Core 与 Entity Framework Core 进行数据库操作
  • 【图像】灰度图与RGB图像的窗宽、窗位的值范围二三问
  • 在VBA中,对Excel单元格的操作方法 (qo+op)
  • 报表融合大屏,做不一样的财务分析!
  • K8s之自动扩缩容
  • Django:配置Django报错:No such file:../../runserver
  • EXCEL文件如何批量加密,有什么方法
  • 一键部署:Visual Basic应用程序的安装程序制作指南
  • 项目:基于TCP的文件传输系统