阿里大鱼异步发送短信

2023-12-02 16:18

本文主要是介绍阿里大鱼异步发送短信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pom引用

		<!--阿里大鱼--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.4.5</version></dependency><!--阿里大鱼-->

异步线程发送短信

package com.sxapp.message.handler;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.sxapp.message.constant.SmsTemplateCodeEnum;
import com.sxapp.message.constant.SmsType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** @author Dirk* @Description* @Date Create at 2019-07-09 14:04*/
public class SendSmsHandler implements Runnable {private static final Logger log = LoggerFactory.getLogger(SendSmsHandler.class);private String phone;private String templateParam;private SmsType type;public SendSmsHandler(String phone, String templateParam, SmsType type) {this.phone = phone;this.templateParam = templateParam;this.type = type;}/*** 阿里大鱼发送短信** @param phone         手机号* @param templateParam 短信模板变量* @param type          验证码类型*/private void sendSms(String phone, String templateParam, SmsType type) {String regionId = "";String accessKeyId = "";String accessSecret = "";String signName = "";DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessSecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");request.putQueryParameter("PhoneNumbers", phone);request.putQueryParameter("SignName", signName);request.putQueryParameter("TemplateCode", SmsTemplateCodeEnum.getTemplateCode(type));request.putQueryParameter("TemplateParam", templateParam);CommonResponse response = null;try {response = client.getCommonResponse(request);} catch (ClientException e) {e.printStackTrace();return;}if (response == null) {log.error("send sms failed! phone is {}, type is {}", phone, type);return;}JSONObject jsonObject = JSONObject.parseObject(response.getData());String statusCode = jsonObject.getString("Code");// 发送成功的状态码String ok = "OK";if (!ok.equals(statusCode)) {log.error("send sms failed! phone is {}, response is {}", phone, response.getData());return;}log.info("send sms success. phone is {}, response is {}", phone, response.getData());}@Overridepublic void run() {sendSms(phone, templateParam, type);}public static class TemplateParamBuild {private String code;private String name;private String phone;public TemplateParamBuild code(String code) {this.code = code;return this;}public TemplateParamBuild name(String name) {this.name = name;return this;}public TemplateParamBuild phone(String newPhone) {this.phone = newPhone;return this;}public String getCode() {return code;}public String getName() {return name;}public String getPhone() {return phone;}public String build() {return JSON.toJSONString(this);}}
}

调用

	public void sendSms(SmsRequest smsRequest) {// 异步发送短信SendSmsHandler handler = new SendSmsHandler(smsRequest.getPhone(),new SendSmsHandler.TemplateParamBuild().code(smsRequest.getCode()).name(smsRequest.getName()).phone(smsRequest.getPhone()).build(),smsRequest.getSmsType());threadPoolTaskExecutor.execute(handler);}

SmsType是对外暴露枚举,SmsTemplateCodeEnum是对应的带有TemplateCode属性的枚举

这篇关于阿里大鱼异步发送短信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/445992

相关文章

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、