热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot异步执行方法,接口异步调用方法

SpringBoot异步执行方法,在接口调用时开启一个新线程做一些操作,这个操作结果,不影响返回值项目启动类或者任意被Spring容器管理的类,必须要有一个@EnableAsyn

SpringBoot 异步执行方法,在接口调用时开启一个新线程做一些操作,这个操作结果,不影响返回值

项目启动类或者任意被Spring容器管理的类,必须要有一个@EnableAsync注解,标识项目开启异步功能
然后在需要异步执行的方法或类上加上@Async注解,在类上加上这个注解标识这个类里面的所有方法都是异步方法,在被其他类调用时会启动一个线程进行该方法的执行。
代码示例:

package com.yxh.www.template.mas;import com.yxh.www.common.redis.RedisListService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component;/*** Mas回调状态报告信息保存到Redis* 为了防止云Mas平台因为Redis阻塞导致状态报告推送超时,接口调用失败,所以保存Redis信息异步执行** @author yangxiaohui*/
@Slf4j
@Component
@EnableAsync
public class MasSmsRedisService {private final RedisListService redisListService;public MasSmsRedisService(RedisListService redisListService) {this.redisListService = redisListService;}/*** 移动云Mas短信发送状态报告回调地址*/public void reportSmsMessage(ReportStatusModel reportStatusModel){redisListService.putListRight("ReportStatusModel",reportStatusModel,86400L);}/*** 移动云Mas上行短信回调地址*/public void upSmsMessage(UpSmsMessageModel upSmsMessageModel){redisListService.putListRight("UpSmsMessageModel",upSmsMessageModel,86400L);}
}

异步方法调用示例:

/*** 移动云Mas短信发送状态报告回调地址*/@PostMapping("/reportStatus")public void reportSmsMessage(@RequestBody ReportStatusModel reportStatusModel){log.info("收到响应:{}", JSON.toJSONString(reportStatusModel));masSmsRedisService.reportSmsMessage(reportStatusModel);}

注意事项



  • 必须要加@EnableAsync注解

  • 不能在同一类下调用@Async注解的方法,比如A类下有a和b方法,b方法有- @Async注解,不能直接这样a调用b,要把b放到其他类中

  • @Async也可以打在类上,这样类下面的所有方法都是异步的(被其他类调用的时候)


推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 标题: ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
author-avatar
纪志鹏大利集客_776
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有