首页 > 其他分享 >微服务项目:尚融宝(终)(核心业务流程:整合Rabbit MQ发送短信)

微服务项目:尚融宝(终)(核心业务流程:整合Rabbit MQ发送短信)

时间:2022-10-13 22:32:46浏览次数:58  
标签:smsDTO String 创建 SMS MQ Rabbit 尚融宝 MQConst public


认清现实,放弃幻想,准备斗争

一、MQ服务器设置

1、访问MQ控制台

​http://你自己虚拟机的位置:15672

微服务项目:尚融宝(终)(核心业务流程:整合Rabbit MQ发送短信)_spring boot

http://192.168.100.103:15672​

2、创建用户

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

3、创建虚拟机

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

二、创建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  

@Configuration
public class MQConfig {

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

4、创建MQConst  

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 

@Service
@Slf4j
public class MQService {

@Resource
private 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;
}
}

三、service-base中创建SmsDTO 

@Data
@ApiModel(description = "短信")
public class SmsDTO {

@ApiModelProperty(value = "手机号")
private String mobile;

@ApiModelProperty(value = "消息内容")
private String message;
}

四、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.103
port: 5672
virtual-host: /srbhost
username: srbuser
password: 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);
}

五、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.103
    port: 5672
    virtual-host: /srbhost
    username: srbuser
    password: 123456

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) throws IOException {
log.info("SmsReceiver 消息监听");
Map<String,Object> param = new HashMap<>();
param.put("code", smsDTO.getMessage());
smsService.send(smsDTO.getMobile(), SmsProperties.TEMPLATE_CODE, param);
}
}

 

微服务项目:尚融宝(终)(核心业务流程:整合Rabbit MQ发送短信)_spring boot_02

山高路远,江湖再见

标签:smsDTO,String,创建,SMS,MQ,Rabbit,尚融宝,MQConst,public
From: https://blog.51cto.com/u_15786786/5754852

相关文章

  • Centos7部署rocketmq分片集群
    目录Centos7部署rocketmq分片集群一、环境准备二、部署rocketmq2.1、下载rocketmq2.2、解压包2.3、根据实际,修改jvm参数三、修改配置文件,配置集群3.1、broker.properties文......
  • PLC采集网关实现三菱 PLC FX3S 接入金鸽MQTT云平台
    COM口采集三菱PLCFX3S的配置工业智能网关一共有四个COM接口,4个COM口的配置内容一样,COM1固定为RS232,COM2、COM3和COM4是RS232/RS485可选串口(默认为RS485)。因三菱PLCFX......
  • 如何在Angular项目中使用MQTT
    前言​​Angular​​是一个基于TypeScript构建的开发平台。它包括一个基于组件的框架,用于构建可伸缩的Web应用;一组完美集成的库,涵盖路由、表单管理、客户端-服务器通信......
  • docker 安装RocketMQ集群(主从,同一服务器)
    一、安装1.选择镜像(1)镜像搜索:dockersearchrocketmq也可以访问网址:https://hub.docker.com/r/apache/rocketmq/tags(2)下拉镜像:dockerpullapache/rocketmq:4.9.0(3......
  • 发送mqtt QoS 2的消息时,消息会丢失吗?如何保证消息传输不丢失思路
    官网文档解决“丢失消息”这一问题。消息是非持久消息、发送至错误的位置还是从未发送?错误编写的客户机程序可能会丢失消息。开始之前您有多肯定您所发送的消息已丢失......
  • 通过消息队列MQ实现组件解耦
    ​当业务系统的规模扩大时,也会增加系统架构的复杂度,在架构设计时对系统进行分层与解耦能够避免多个组件之间的性能不足、负载高、任务处理堆栈长及组件故障等风险。    ......
  • RabbitMQ基本概念
    视频参考:https://www.bilibili.com/video/BV1Et411Y7tQ?p=85&vd_source=c85b4a015a69e82ad4f202bd9b87697f博客参考:https://blog.csdn.net/xiangjunyes/article/details/1......
  • W10 启动 RabbitMQ 教程
       启动服务   1.进入rabbitmq的安装sbin目录下cmd进入命令窗口          2.cmd输入命令rabbitmq-server.bat,如图启动成功    ......
  • RabbitMQ如何保证消息的可靠性
    如何确保RabbitMQ消息的可靠性对于生产者,开启生产者确认机制,确保生产者的消息能到达队队列对于mq,开启持久化功能,确保消息未消费前在队列中不会丢失对于消费者,开......
  • RabbitMQ 生产者和消费代码实例
       启动服务   1.进入rabbitmq的安装sbin目录下cmd进入命令窗口          2.cmd输入命令rabbitmq-server.bat,如图启动成功    ......