java异步队列

本文介绍了在Java中使用异步队列处理耗时任务的思路与步骤,包括加入监听器、实现监听器、创建转交处理对象和线程、自动转交异步处理以及如何在业务中应用这些步骤。异步队列通过持久化存储和补偿机制确保任务的可靠执行,提升用户体验。
摘要由CSDN通过智能技术生成


前言

在某些场景下,操作比较耗时,给用户体验不是很好,这时候我们就会直接想到两种方案,一种是定时任务,一种就是异步队列,那些实时性要求不高,且比较耗时的任务,是队列的最佳应用场景。


一、异步队列实现思路?

持久化=>插入队列=>出队,当程序突然停止,当程序启动的时候,从库里面拉出未执行的数据继续入队(补偿机制),下面是java的简单实现。

二、实现步骤

1.加入监听器

代码如下(示例):在web.xml 加入监听器

<!--转交异步处理监听器 -->
    <listener>
        <listener-class>context.ZjListener</listener-class>
    </listener>

2.实现监听器

代码如下(示例):

public class ZjListener implements ServletContextListener {
   

    private static Logger log = LoggerFactory.getLogger(ZjListener.class);

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
   
        log.info("初始化转交异步处理线程...");
        ZjManager.getInstance().starup();
        log.info("初始化转交异步处理线程成功...");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
   
        ZjManager.getInstance().shutdown();
    }

3.实现转交处理对象和转交处理线程

代码如下(示例):我就简单示例一些,具体实现看业务昂

public class ZjRequset {
   

    private String dm;

    private String xh;

    public String getDm() {
   
        return dm;
    }

    public void setDm(String dm) {
   
        this.dm = dm;
    }
    
    public String getXh() {
   
        return xh;
    }

    public void setXh(String xh) {
   
        this.xh = xh;
    }
}
public class ZjThread implements Runnable{
   

    private ZjRequset requset;

    private ZjService zjService = WebAppContext.getBeanEx("ZjService")
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值