阿里大鱼异步发送短信

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编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Java 中实现异步的多种方式

《Java中实现异步的多种方式》文章介绍了Java中实现异步处理的几种常见方式,每种方式都有其特点和适用场景,通过选择合适的异步处理方式,可以提高程序的性能和可维护性,感兴趣的朋友一起看看吧... 目录1. 线程池(ExecutorService)2. CompletableFuture3. ForkJoi

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题记录

《在SpringBoot中使用异步线程时的HttpServletRequest复用问题记录》文章讨论了在SpringBoot中使用异步线程时,由于HttpServletRequest复用导致... 目录一、问题描述:异步线程操作导致请求复用时 Cookie 解析失败1. 场景背景2. 问题根源二、问题详细分

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键