使用RabbitMQ发送短信

news2024/11/6 7:09:14

1、在项目中分别创建模块financial-core、financial-mq、financial-sms,如图:

在这里插入图片描述

模块构成

  <modules>
        <module>financial-common</module>
        <module>financial-base</module>
        <module>financial-core</module>
        <module>financial-gateway</module>       
        <module>financial-sms</module>
        <module>financial-mq</module>        
    </modules>

2、搭建RabbitMQ服务,参考下面文章

https://lovoo.blog.csdn.net/article/details/119174146

3、MQ模块financial-mq

在这里插入图片描述

3.1 在pom.xml添加依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>koo-financial-parent</artifactId>
        <groupId>com.koo</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>financial-mq</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

</project>

3.2 MQ Json字符串转换 配置

@Configuration
public class MQConfig {
    @Bean
    public MessageConverter messageConverter(){
        //json字符串转换器
        return new Jackson2JsonMessageConverter();
    }
}

3.3 定义交换机、路由、队列常量

public class MQConst {

    public static final String EXCHANGE_TOPIC_SMS = "exchange.topic.sms";//交换机
    public static final String ROUTING_SMS_ITEM = "routing.sms.item";//路由
    public static final String QUEUE_SMS_ITEM = "queue.sms.item";//消息队列

}

3.4 定义发送方法

@Service
@Slf4j
public class MQService {

    @Resource
    private AmqpTemplate amqpTemplate;

    public boolean sendMessage(String exchange, String routingKey, Object message) {
        log.info("发送消息。。。。。。");
        amqpTemplate.convertAndSend(exchange, routingKey, message);
        return true;
    }
}

4、业务模块financial-core

4.1 在pom.xml中引入financial-mq模块

<dependencies>

        <dependency>
            <groupId>com.koo</groupId>
            <artifactId>financial-base</artifactId>
            <version>1.0.0</version>
        </dependency>

        <dependency>
            <groupId>com.koo</groupId>
            <artifactId>financial-mq</artifactId>
            <version>1.0.0</version>
        </dependency>     

    </dependencies>

4.2 在application.yml配置rabbitMQ信息

  #spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    virtual-host: /financial

4.3 发送信息

String mobile = userInfoService.getMobileByBindCode(bindCode);
SmsDTO smsDTO = new SmsDTO();
smsDTO.setMobile(mobile);
smsDTO.setMessage("充值成功");
mqService.sendMessage(
        MQConst.EXCHANGE_TOPIC_SMS,
        MQConst.ROUTING_SMS_ITEM,
        smsDTO
);

5、短信发送模块financial-sms

5.1 引入依赖

 <dependency>
            <groupId>com.koo</groupId>
            <artifactId>financial-mq</artifactId>
            <version>1.0.0</version>
        </dependency>

5.2 在application.yml配置rabbitMQ信息

  #spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    virtual-host: /financial

5.3 监听MQ消息,并发送短信

@Component
@Slf4j
public class SmsReceiver {

    @Resource
    private SmsService smsService;

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(value = MQConst.QUEUE_SMS_ITEM, durable = "true"),
            exchange = @Exchange(value = MQConst.EXCHANGE_TOPIC_SMS),
            key = {MQConst.ROUTING_SMS_ITEM}
    ))
    public void send(SmsDTO smsDTO) {
        log.info("SmsReceiver消息监听。。。。。。");
        HashMap<String, Object> param = new HashMap<>();
        param.put("code", smsDTO.getMessage());

        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        smsService.send(smsDTO.getMobile(), SmsProperties.TEMPLATE_CODE, param);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/398069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剑指 Offer 66. 构建乘积数组

摘要 剑指 Offer 66. 构建乘积数组 一、左右乘积列表 我们不必将所有数字的乘积除以给定索引处的数字得到相应的答案&#xff0c;而是利用索引左侧所有数字的乘积和右侧所有数字的乘积&#xff08;即前缀与后缀&#xff09;相乘得到答案。对于给定索引i&#xff0c;我们将使…

Qt广告机服务器(上位机)

目录功能结构adSever.promain.cpptcp_MSG.h 共用Tcp传输信息adsever.h 服务器adsever.cpp 服务器addate.h 时间处理addate.cpp 时间处理adtcp.h 客户端Socket处理adtcp.cpp 客户端Socket处理client.h 客户端信息类client.cpp 客户端信息类admsglist.h 信息记录模块admsglist.cp…

jupyter的使用

1.安装 安装过程看这篇记录。 安装 2.如何启动 环境搭建好后&#xff0c;本机输⼊jupyter notebook命令&#xff0c;会⾃动弹出浏览器窗⼝打开 Jupyter Notebook # 进⼊虚拟环境 workon ai(这个是虚拟环境的名称) # 输⼊命令 jupyter notebook本地notebook的默认URL为&…

宝藏级BI数据可视化功能|图表联动分析

在浏览其他人的BI数据可视化报表时&#xff0c;经常会发现这样的一个现象&#xff0c;点一下上一张数据可视化图表中的某个门店&#xff0c;下一张图表将立即针对该门店展开数据可视化分析。这是什么效果&#xff1f;怎么实现&#xff1f;BI软件中还有多少宝藏级BI数据可视化功…

Oracle表分区的创建、新增、拆分

Oracle中为了方便管理、查询数据当数据量大于500w或者2G时最好用分区表&#xff0c;常见的一种是使用时间作为分区。 分区表添加新的分区有 2 种情况&#xff1a; (1) 原分区里边界是 maxvalue 或者 default。 这种情况下&#xff0c;我们需要把边界分区 drop 掉&#xff0c;加…

好的计划是成功的一半,如何制定项目计划?

好的计划是成功的一半&#xff0c;不好的计划会使项目一步步失败&#xff0c;任何事情&#xff0c;要取得成功&#xff0c;离不开一个科学合理的计划。 计划是为了实现项目所提出的各项目标&#xff0c;每一项任务都是针对某一个特定目标的&#xff0c;因此&#xff0c;一项计划…

计算机视觉手指甲标注案例

关键点标注是指识别和标注图像或视频中特定的相关点或区域的过程。在机器学习行业&#xff0c;它经常被用来训练计算机视觉模型&#xff0c;以执行诸如物体检测、分割和跟踪等任务。 关键点注释可用于以下应用&#xff1a; 面部关键点检测&#xff1a;识别图像中人脸上的眼睛…

12.SpringSecurity中OAuth2.0的实现

一、OAuth2.0介绍 1.概念说明 https://oauth.net/2/ 先说OAuth&#xff0c;OAuth是Open Authorization的简写。   OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息&#xff08;如…

[league/glide]两行代码实现一套强大的图片处理HTTP服务

只要两行代码&#xff0c;就能实现类似对象存储云提供的基于参数的图片处理&#xff0c;比如裁剪、放大、水印、旋转等等。 我们经常使用第三方的对象存储服务&#xff0c;比如七牛云或阿里云&#xff0c;他们都提供了“智能媒体服务”&#xff0c;其实就是在链接上加上各种参…

Vue:(三十四)Vuex及其属性

Vuex的学习更多是代码了&#xff0c;所以就放在一起了&#xff0c;接下来大概说一下吧。概念&#xff1a;专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue插件&#xff0c;对Vue应用中多个组件的共享状态进行集中式的管理&#xff08;读/写&#xff09;&a…

【Git】P4 Git 远程仓库(2)克隆,抓取与拉取

Git 克隆&#xff0c;拉取与抓取git 克隆 clonegit 拉取 fetch、合并 mergegit 抓取 pullgit 克隆 clone 克隆的使用场景很少&#xff0c;举个例子&#xff0c;老板给你一个任务&#xff1a;这个服务的 bug 由你来解决&#xff1a;那么你的第一步就是从云端克隆到本地&#xf…

VMware 搭建 Linux 系统

前言 使用 VMware Workstation 17 Pro 基于CentOS 7.9 镜像搭建 K8S 一主多从本地虚拟服务器环境 主机名IP配置k8s-master192.168.179.214核CPU 8G内存 20G硬盘k8s-node1192.168.179.224核CPU 8G内存 20G硬盘k8s-node2192.168.179.234核CPU 8G内存 20G硬盘VMware 下载安装 VMw…

Spark读取JDBC调优

Spark读取JDBC调优&#xff0c;如何调参一、场景构建二、参数设置1.灵活运用分区列实际问题&#xff1a;工作中需要读取一个存放了三四年历史数据的pg数仓表&#xff08;缺少主键id&#xff09;&#xff0c;需要将数据同步到阿里云 MC中&#xff0c;Spark在使用JDBC读取关系型数…

案例13-localStorage的使用分析

1、背景介绍 大家看下边的逻辑是否能看明白呢&#xff1f; 前端在调用后端接口获取某一个人的评论次数、获赞次数、回复次数。调用之后判断后端返回过来的值。如果返回回来的值是0的话&#xff0c;从缓存中获取对应的值&#xff0c;如果从缓存中获取的评论次数为空那么其他两…

数据结构——线性数据结构(C语言实现单链表详解)

什么是单链表&#xff1f; 单链表就是一种线性的链式数据结构。单链表通过节点来存储线性数据的&#xff0c;单链表不要求连续的物理空间来存储数据。但是&#xff0c;单链表在逻辑结构上是连续的。通常&#xff0c;会有一个头指针指向单链表的首结点因为单链表的结点会存储一…

【云原生】持久化存储之NFS

文章目录介绍一、NFS1. 部署nfs1.1 找一台服务器作为nfs服务端1.2 检查&#xff1a;1.3 创建挂载路径1.4 在nfs服务器启动nfs服务2. 所有node节点部署nfs服务3. 测试—部署nginx应用&#xff0c;使用nfs持久网络存储二、 PV和PVC2.1 PV2.2 PVC2.3 实现流程2.4 PV&PVC挂载步…

day61-day62【代码随想录】二刷数组

文章目录前言一、有效三角形的个数【二分法】二、Pow(x, n)&#xff08;力扣50&#xff09;方法一方法二三、在 D 天内送达包裹的能力&#xff08;力扣1011&#xff09;【二分法】四、制作 m 束花所需的最少天数&#xff08;力扣1482&#xff09;【二分法】每日一题&#xff1a…

你真的知道MySQL索引组织数据的形式吗??

MySQL索引背后的数据结构前言MySQLMySQL背后的数据结构B树B树前言 好久不见,困扰了我许久的阴霾终于散去了,但是随之而来的是学校堆积如山的任务考试,这段时间不可否认我的学习效率和学习效果不是很佳,但是我之前就说过学习是需要贯穿程序猿一生的事情,流水不争先,争的是滔滔不…

Python基础 | Miniconda的安装

文章目录什么是Miniconda3Miniconda安装JupyterMiniconda运行JupyterMiniconda安装SpyderMiniconda和Anaconda对比Miniconda安装第三方库什么是Miniconda3 Miniconda是conda的免费的最小安装包。它是Anaconda的小型引导程序版本&#xff0c;仅包含了conda&#xff0c;Python&a…

【架构师】跟我一起学架构——Serverless

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;软件设计师/鸿蒙高级工程师认证&#xff0c;在备战高级架构师/系统分析师&#xff0c;欢迎关注小弟&#xff01; 博主小留言…