31、RabbitMQ

31.1、整合Rabbit MQ发送短信

31.1.1、MQ服务器设置

1、访问MQ控制台

http://192.168.100.103:15672

2、创建用户

创建用户 srbuser,配置管理员权限

3、创建虚拟机

创建虚拟机 /srbhost,在Set permission中为新建的用户分配访问虚拟机 /srbhost 和 / 的权限

31.1.2、创建rabbit-mq模块

1、创建模块

srb下创建rabbit-mq模块

2、引入依赖

<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>

**3、创建MQConfig **

package com.atguigu.srb.rabbitutil.config;@Configuration
public class MQConfig {@Beanpublic MessageConverter messageConverter(){//json字符串转换器return new Jackson2JsonMessageConverter();}
}

**4、创建MQConst **

package com.atguigu.srb.rabbitutil.constant;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";//消息队列
}

5、创建MQService

package com.atguigu.srb.rabbitutil.service;@Service
@Slf4j
public class MQService {@Resourceprivate AmqpTemplate amqpTemplate;/***  发送消息* @param exchange 交换机* @param routingKey 路由* @param message 消息*/public boolean sendMessage(String exchange, String routingKey, Object message) {log.info("发送消息...........");amqpTemplate.convertAndSend(exchange, routingKey, message);return true;}
}

31.1.3、service-base中创建SmsDTO

package com.atguigu.srb.base.dto;@Data
@ApiModel(description = "短信")
public class SmsDTO {@ApiModelProperty(value = "手机号")private String mobile;@ApiModelProperty(value = "消息内容")private String message;
}

31.1.4、service-core中发送消息

1、引入依赖

<!--rabbitmq消息队列-->
<dependency><groupId>com.atguigu</groupId><artifactId>rabbit-mq</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>

**2、添加yml配置 **

  #spring:rabbitmq:host: 192.168.100.103port: 5672virtual-host: /srbhostusername: srbuserpassword: 123456

3、根据bindCode获取手机号

UserInfoService接口:

String getMobileByBindCode(String bindCode);

UserInfoServiceImpl实现:

@Override
public String getMobileByBindCode(String bindCode) {QueryWrapper<UserInfo> userInfoQueryWrapper = new QueryWrapper<>();userInfoQueryWrapper.eq("bind_code", bindCode);UserInfo userInfo = baseMapper.selectOne(userInfoQueryWrapper);return userInfo.getMobile();
}

4、向MQ发送消息

UserAccountServiceImpl 充值回调方法的最后添加发送消息的代码:

@Resource
private UserInfoService userInfoService;
@Resource
private MQService mqService;@Transactional(rollbackFor = Exception.class)
@Override
public void notify(Map<String, Object> paramMap) {log.info("充值成功:" + JSONObject.toJSONString(paramMap));......//发消息log.info("发消息");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);
}

31.1.5、service-sms中监听消息

1、引入依赖

<!--rabbitmq消息队列-->
<dependency><groupId>com.atguigu</groupId><artifactId>rabbit-mq</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>

2、添加配置 yml

  #spring:rabbitmq:host: 192.168.100.103port: 5672virtual-host: /srbhostusername: srbuserpassword: 123456

3、创建MQ监听器

package com.atguigu.srb.sms.receiver;@Component
@Slf4j
public class SmsReceiver {@Resourceprivate 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) throws IOException {log.info("SmsReceiver 消息监听");Map<String,Object> param = new HashMap<>();param.put("code", smsDTO.getMessage());smsService.send(smsDTO.getMobile(), SmsProperties.TEMPLATE_CODE, param);}
}

本文章参考B站 尚硅谷《尚融宝》Java微服务分布式金融项目,仅供个人学习使用,部分内容为本人自己见解,与尚硅谷无关。

【金融项目】尚融宝项目(十六)相关推荐

  1. 【金融项目】尚融宝项目(一)

    1.尚融宝项目简介 1.1.前言 尚融宝项目是一个网络借贷信息中介服务平台,为个人投资者.个人融资用户和小微企业提供专业的线上信贷及出借撮合服务. 行业案例:人人贷 https://www.renre ...

  2. 【金融项目】尚融宝项目(十四)

    27.放款 27.1.需求介绍 27.1.1.平台放款 1.需求描述 标的募资时间到,平台会操作放款或撤标,如果达到放款条件则操作放款 说明:撤标过程与放款过程一致,处理业务相对简单,只是将出借金额返 ...

  3. 【金融项目】尚融宝项目(十五)

    29.提现和还款 29.1.提现 29.1.1.需求 放款成功后,借款人可以申请提现. 参考<汇付宝商户账户技术文档>3.15用户申请提现 29.1.2.前端整合 pages/user/w ...

  4. 【金融项目】尚融宝项目(十)

    19.申请借款额度 19.1.需求介绍 19.1.1.借款人申请额度 1.需求描述 平台管理员根据借款人个人信息设置积分,通过积分规则借款人可以获取额度. 2.相关数据库表 19.1.2.具体步骤 s ...

  5. 【金融项目】尚融宝项目(六)

    11.访问令牌 11.1.单点登录 11.1.1.用户身份认证 11.1.1.1.单一服务器模式 一般过程如下: 用户向服务器发送用户名和密码. 验证服务器后,相关数据(如用户名,用户角色等)将保存在 ...

  6. 【金融项目】尚融宝项目(四)

    6.Alibaba EasyExcel 6.1.EasyExcel简介 6.1.1.Excel导入导出的应用场景 6.1.1.1.数据导入 减轻录入工作量 6.1.1.2.数据导出 统计信息归档 6. ...

  7. 【金融项目】尚融宝项目(九)

    18.账户绑定 18.1.需求介绍 18.1.1.运行汇付宝 1.数据库 hfb.sql 2.程序 hfb 3.数据库配置 application-dev.yml 中修改数据库配置 4.启动程序 端口 ...

  8. 【金融项目】尚融宝项目(八)

    16.服务调用 16.1.注册中心和服务发现 16.1.1.运行Nacos注册中心 16.1.1.1.Nacos下载和安装 下载地址:https://github.com/alibaba/nacos/ ...

  9. 【金融项目】尚融宝项目(十一)

    21.借款申请 21.1.需求介绍 21.1.1.借款人申请借款 1.需求描述 2.相关数据库表 21.1.2.具体步骤 step1:借款人点击"我要借款" step2:展示借款信 ...

最新文章

  1. 电机串电阻会有什么影响?
  2. Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  3. [芦半山]Binder的异常机制
  4. airplay2协议是什么_什么是AirPlay?
  5. 在PowerShell中批量卸载设备
  6. 尴尬!微软的 PowerShell 竟是 Linux 用户最多!| 极客头条
  7. 敢从头写一个OFFICE,你这么厉害,怎么不来解几个BUG
  8. matlab线性代数对角化,工程线性代数(MATLAB版) (2007年7月)
  9. AI(人工智能)的英文全称是什么?AI指什么?包含什么?
  10. 辽宁大学计算机专科专业,2020辽宁大学计算机考研专业课调整
  11. Android进程间通信系列-----------进程间的数据传递载体Parcel
  12. API接口加密—非对称加密解密之分段加解密
  13. ccsa安学网小程序_CCSA安学网安全题库
  14. Verilog学习笔记(06)
  15. IO缓冲(buffer)和高速缓存(cache)
  16. modelsim之inout类型tb文件编写及仿真
  17. Cesium加载ArcGIS的PBF矢量切片服务
  18. MIRACL密码库分析报告3 mrio.c
  19. 高质量 C++/C 编程指南
  20. 宁夏谷歌地球高程DEM等高线下载

热门文章

  1. 智能AI短视频搬运剪辑小程序,可过原创检测
  2. 以下是根据在下的一些朋友芳名作诗,请朋友指点,继续增加中
  3. UE4学习笔记——粒子发射器
  4. Shamir秘密共享算法
  5. 一文了解Java隐式类型转换
  6. DijkstraAlgorithm(迪杰斯特拉算法)
  7. import java.sql.*;问题:The package java.sql is not accessible
  8. 小米5S TWRP刷面具、EdXposed
  9. 拼多多无货源开店需要用哪些店群软件
  10. 写给程序员看的项目管理入门