【金融项目】尚融宝项目(十六)
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.前言 尚融宝项目是一个网络借贷信息中介服务平台,为个人投资者.个人融资用户和小微企业提供专业的线上信贷及出借撮合服务. 行业案例:人人贷 https://www.renre ...
- 【金融项目】尚融宝项目(十四)
27.放款 27.1.需求介绍 27.1.1.平台放款 1.需求描述 标的募资时间到,平台会操作放款或撤标,如果达到放款条件则操作放款 说明:撤标过程与放款过程一致,处理业务相对简单,只是将出借金额返 ...
- 【金融项目】尚融宝项目(十五)
29.提现和还款 29.1.提现 29.1.1.需求 放款成功后,借款人可以申请提现. 参考<汇付宝商户账户技术文档>3.15用户申请提现 29.1.2.前端整合 pages/user/w ...
- 【金融项目】尚融宝项目(十)
19.申请借款额度 19.1.需求介绍 19.1.1.借款人申请额度 1.需求描述 平台管理员根据借款人个人信息设置积分,通过积分规则借款人可以获取额度. 2.相关数据库表 19.1.2.具体步骤 s ...
- 【金融项目】尚融宝项目(六)
11.访问令牌 11.1.单点登录 11.1.1.用户身份认证 11.1.1.1.单一服务器模式 一般过程如下: 用户向服务器发送用户名和密码. 验证服务器后,相关数据(如用户名,用户角色等)将保存在 ...
- 【金融项目】尚融宝项目(四)
6.Alibaba EasyExcel 6.1.EasyExcel简介 6.1.1.Excel导入导出的应用场景 6.1.1.1.数据导入 减轻录入工作量 6.1.1.2.数据导出 统计信息归档 6. ...
- 【金融项目】尚融宝项目(九)
18.账户绑定 18.1.需求介绍 18.1.1.运行汇付宝 1.数据库 hfb.sql 2.程序 hfb 3.数据库配置 application-dev.yml 中修改数据库配置 4.启动程序 端口 ...
- 【金融项目】尚融宝项目(八)
16.服务调用 16.1.注册中心和服务发现 16.1.1.运行Nacos注册中心 16.1.1.1.Nacos下载和安装 下载地址:https://github.com/alibaba/nacos/ ...
- 【金融项目】尚融宝项目(十一)
21.借款申请 21.1.需求介绍 21.1.1.借款人申请借款 1.需求描述 2.相关数据库表 21.1.2.具体步骤 step1:借款人点击"我要借款" step2:展示借款信 ...
最新文章
- 电机串电阻会有什么影响?
- Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
- [芦半山]Binder的异常机制
- airplay2协议是什么_什么是AirPlay?
- 在PowerShell中批量卸载设备
- 尴尬!微软的 PowerShell 竟是 Linux 用户最多!| 极客头条
- 敢从头写一个OFFICE,你这么厉害,怎么不来解几个BUG
- matlab线性代数对角化,工程线性代数(MATLAB版) (2007年7月)
- AI(人工智能)的英文全称是什么?AI指什么?包含什么?
- 辽宁大学计算机专科专业,2020辽宁大学计算机考研专业课调整
- Android进程间通信系列-----------进程间的数据传递载体Parcel
- API接口加密—非对称加密解密之分段加解密
- ccsa安学网小程序_CCSA安学网安全题库
- Verilog学习笔记(06)
- IO缓冲(buffer)和高速缓存(cache)
- modelsim之inout类型tb文件编写及仿真
- Cesium加载ArcGIS的PBF矢量切片服务
- MIRACL密码库分析报告3 mrio.c
- 高质量 C++/C 编程指南
- 宁夏谷歌地球高程DEM等高线下载