首页 > 其他分享 >spring事件机制,异步发送消息到kafka

spring事件机制,异步发送消息到kafka

时间:2023-01-20 18:44:12浏览次数:55  
标签:异步 KafkaSendMsgEvent spring dtoList kafka List public

步骤:

1、创建event

public class KafkaSendMsgEvent extends ApplicationEvent {

    private List dtoList;

    public KafkaSendMsgEvent(Object source, List dtoLists) {
        super(source);
        dtoList = dtoLists;
    }

    public List getDtoList() {
        return dtoList;
    }
}
View Code

2、创建listener

@Configuration
@EnableAsync
public class KafkaSndMsgListener {

    @Resource
    private Producer producer;

    private ObjectMapper mapper;

    @PostConstruct
    public void init() {
        mapper = new ObjectMapper();
    }

    /**
     * 使用spring的事件机制,异步往kafka发送消息
     * @param event
     */
    @Async
    @EventListener
    public void kafkaSndMsgListener(KafkaSendMsgEvent event){
        String message = getMessage(event.getDtoList());
        producer.sendMsg(message);

    }

    private String getMessage(List<String> dto) {
        try {
            return mapper.writeValueAsString(dto);
        } catch (JsonProcessingException ex) {
            throw new OpcException(ex);
        }
    }
}
View Code

3、发布spring事件

    @RequestMapping("/")
    public void readImmData() {
        long startTime = System.nanoTime();
        // 采集实时数据
        List<String> dtoList = Lists.newArrayList();
        dtoList.add("test-1");
        dtoList.add("test-2");
        dtoList.add("test-3");
        // 使用spring事件机制,异步发送消息到kafka
        eventPublisher.publishEvent(new KafkaSendMsgEvent(this, dtoList));
        log.info("读取数据耗时:{} 毫秒, 数据量:{}", Duration.ofNanos(System.nanoTime() - startTime).toMillis(), dtoList.size());
    }
View Code

ref:https://blog.csdn.net/weixin_43770545/article/details/105971971

标签:异步,KafkaSendMsgEvent,spring,dtoList,kafka,List,public
From: https://www.cnblogs.com/caesar-the-great/p/17063011.html

相关文章

  • SpringBoot
    SpringBoot原理初探狂神说:狂神说SpringBoot02:运行原理初探(qq.com)yaml配置注入代替@value赋值法语法对比properties与yamlSpringBoot使用一个全局的配置文件,配置......
  • SpringMVC
    第一个入门程序创建空maven项目,右键maven项目添加框架的支持,选web。这样可以保证web是最新版,如果不是,程序可能报错所需依赖<dependencies><dependency>......
  • Spring5
    历史版本下载:https://repo.spring.io/release/org/springframework/spring/Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架SpringBoot是一个快速开发的......
  • SpringBoot
    SpringBoot原理初探狂神说:狂神说SpringBoot02:运行原理初探(qq.com) yaml配置注入代替@value赋值法 语法对比properties与yamlSpringBoot使用一个全局的配置文件......
  • springboot允许跨域访问
    前后端开发学习中,vue里面需要跨域访问后台数据可在springboot后台里面添加个配置类即可:packagecom.springboottest.config;importorg.springframework.beans.factor......
  • Kafka的架构
    Kafka的整体架构非常简单,是显式分布式架构,producer、broker(kafka)和consumer都可以有多个。Producer,consumer实现Kafka注册的接口,数据从producer发送到broker,broker承担一个......
  • SpringMVC
    第一个入门程序创建空maven项目,右键maven项目添加框架的支持,选web。这样可以保证web是最新版,如果不是,程序可能报错所需依赖<dependencies>  <dependency>  ......
  • springboot统一处理异常
    增加业务异常处理类:packagecom.example.demo.config;importlombok.Data;@DatapublicclassBizExceptionextendsRuntimeException{protectedIntegererr......
  • 如何安装配置kafka
    最近项目需要用到kafa进行数据流处理,下面将安装部署kafka的方法简单介绍下。1:配置java环境修改/etc/bashrc文件,添加JAVA_HOMEcat/etc/bashrcexportJAVA_HOME=/root/jdk-......
  • 学习笔记——springMVC中视图及视图解析器对象;视图控制器
    2023-01-20一、springMVC中视图及视图解析器对象1、视图解析器对象(ViewResolver)(1)概述:SpringMVC中所有视图解析器对象均实现ViewResolver接口(2)作用:使用ViewResolver,将Vi......