spring boot系列3-四步完成观察者事件发布接收(发送消息接收消息)使用异步方不阻塞主线程

猿份哥 1年前 ⋅ 864 阅读 ⋅ 0 个赞

1.首先Application开启异步

@SpringBootApplication
@EnableAsync
public class DemoApplication {
 
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}


 2.定义事件体(消息)

@Setter
@Getter
@ToString
public class ContentEvent extends ApplicationEvent {
 
    private String content;
 
    /**
     * Create a new ApplicationEvent.
     * @param source the object on which the event initially occurred (never {@code null})
     */
    public ContentEvent(Object source) {
        super(source);
    }
    public ContentEvent(Object source, String content){
        super(source);
        this.content = content;
    }
}


 3.定义事件监听者(接收者)

 
@Component
@Slf4j
public class ContentListener{
 
    @Async
    @EventListener
    public void handler(ContentEvent event){
        log.info("收到消息"+event.getContent());
    }
}


 4.发布事件(发送消息)

@Controller
public class ContentController {
    @Autowired
    private ApplicationContext applicationContext;
 
    @GetMapping("/event/{content}")
    public void sendEvent(@PathVariable String content){
        applicationContext.publishEvent(new ContentEvent(this,content));
    }
}


源码下载链接: https://github.com/tiankonglanlande/springboot


全部评论: 0

    我有话说:

    小程序spring boot发送订阅消息

    1.订阅消息实体类 @Data @AllArgsConstructor @NoArgsConstructor @Builder public class SingleSubscribeMessage

    SpringBoot系列16-Spring boot2x快速整合swagger2(Open Api3注解版)

    前言:为什么要使用swagger 传统的web开发,前端和后端的HTTP接口文档交互都是使用word文档记录,存在不仅限于这些问题;不能时时更新,易于传输etc. swagger2可以使用配置文件

    Spring Boot系列2-全局统一异常处理

    原创: 天空和唯美 天空唯美  点击查看原文 为什么要全局统一异常处理呢?如果系统发生异常做统一异常处理,前端会给用户展示一大片看懂的文字。做统一异常处理后当

    spring boot面试题及答案持续更新中

    2019-07-28最新整理的spring boot面试题及答案 1.Spring Boot是什么 这是摘自官方的一段话 Spring Boot is designed to get you up

    Spring Boot系列1-helloword

      使用springboot简单轻松创建helloword SpringBoot系列1-helloword 关于springboot这是摘自官方的一段话 Spring Boot

    SpringBoot系列19-防止重复请求,重复表单提交超级简单注解的实现之(终极版II)

    前言: 根据最新spring boot:2.5.0版本和在《SpringBoot防止重复请求,重复表单提交超级简单的注解实现之(终极版I)》之上化繁为简抽取更实用的代码,新增超时机制 防重复提交

    ...jar中没有主清单属性, spring boot或者spring cloud的maven项目 java -jar test.jar 方式启动报错:...jar中没有主清单属性

    1.spring boot或者spring cloud的maven项目老是遇到问题...jar中没有主清单属性 2.解决方法:在pom.xml中添加如下代码 <build> <

    Spring Boot系列6-SpringBoot中使用servlet

    介绍在SpringBoot中如何使用servlet pom.xml <dependency> <groupId>org.springframework.boot<

    手机如何省电-让手机发挥它关键的作用

    有时候总是感觉手机的电够用;明明没用几分钟,电量却哗哗的流掉了。特别是出门在外,遇到什么情况,手机不能用,简直是没有安全感,为了让手机发挥它关键的作用这些试试这些方法来省省电! 1.使用飞行模式

    Spring Boot应用或SpringCloud程序设置端口号的几种方式

    前言:springboot项目的每个应用都需要设置端口号,如何设置端口号呢?主要有以下这几种方式 1.通过配置文件设置: (1)在/src/main/resources/路径下的

    springboot1.5.9升级到springboot2.1.3遇到的问题

    1.问题描述: Failed to bind properties under 'spring.datasource.druid.driver' to java.sql.Driver:  

    Spring Boot系列8-使用jasypt加密配置文件内容简单版

    文章目录 1.为什么配置文件需要加密 2.首先引入pom依赖文件 3.在application.properties或者application.yml文件中配置加密密码 4.获取加密内容例如:我想

    SpringBoot系列17-统一异常处理(包含简单的JSR303参数校验)

    原文链接:https://www.lskyf.com/post/211 方法1.通过ControllerAdvice实现+简单的JSR303参数校验实现 1.1 加入依赖 <dependencies> <dependency&g...

    SpringBoot系列12-redis-pipeline keys模糊查询替代方案

    keys模糊查询遇到性能问题redis cup 99%以及解决方案 之前写过一篇文章 《java redis通过key模糊删除,批量删除,批量查询相关数据》,在项目中我也是这样使用的。刚开始还没有

    SpringBoot系列14-加载yml,properties配置文件信息

    集合写法 k: [v1,v2,v3] k: -...

    加入公众号
    加入公众号