从spring的ApplicationListener的角度了解异步机制

本文从一个电商项目的背景出发,探讨如何利用Spring的ApplicationListener结合异步线程池ThreadPoolExecutor处理并发任务事件。通过定义事件、监听器和发布事件,实现事件的异步消费。同时,文章提到了并发控制和线程池的工作原理,以及后续将讨论的RabbitMQ的ACK机制和并发原理解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

接触新的项目的几天时间,除了传统的CRUD业务之外,项目用到的集群锁,以及事件监听广播机制等使用,使人联系其java.util.concurrent.futureTask.的使用,本节将从项目里遇到的各种业务场景中使用的广播事件来对异步线程池的处理广播事件总结,并且对这种事件的广播机制延伸的处理方案的提出改良。

如何使用异步线程池处理任务事件

笔者从事电商项目有一段时间,对于传统的电商项目的了解就是局限于集群,使用统一的redis服务器实现事务锁,达到数据的一致,除此之外,电商项目没有使用到流行的队列,如rabbitMQ之类的成熟工具来处理消息的消费以及生产的业务。而是使用了spring的广播机制来处理,网上看到一遍非常详细介绍这个使用的文章,而笔者从事的电商项目里面同样也是使用applicationContext的applicationListener的监听以及applicationEvenPublisher来处理异步消息的消费。比如分享的消息,推送的消息,等等业务场景都使用使用这样的方式来实现event的监听以及消费。这里重点是事件的定义,定义好了事件需要的处理的属性。

@lombok
public class DemoApplicationEvent extends ApplicationEvent {

    private static final long serialVersionUID = -3452985719192365159L;
    
    private String eventName;
 }

定义好了需要处理的事件就是定义监听的listener,这里关键的点就是实现spring提供的ApplicationListener,上面定义好的event实现ContextStartedEvent这个接口。

public class ContextStartedListene
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值