订单微服务处理支付成功消息|学习笔记

简介: 快速学习订单微服务处理支付成功消息

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)订单微服务处理支付成功消息】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12439


订单微服务处理支付成功消息


内容介绍

流程分析

处理消息


一、流程分析

开发消息处理根据流程分析在支付回调之后需要在日志服务用户服务和订单服务中接收当前支付成功的消息分别进行一些处理在接收服务时消费方式是负载均衡还是广播

考虑一个标准是同时消费还是一个消费即可三个是不同的业务分别对外进行消费所以用的是广播的模式业务处理有很多相似的地方所以以订单服务为重点进行演示

image.png


二、处理消息

支付成功后,支付服务 payService 发送 MQ 消息,订单服务、用户服务、日志服务需要订阅消息进行处理。

1、订单服务修改订单状态为已支付

2、日志服务记录支付日志

3、用户服务负责给用户增加积分

以下用订单服务为例说明消息的处理情况

(1)配置 RocketMQ 属性值

mq. pay. topic=payTopic

mq. pay. consumer . group. name=pay_ _payTopic group

打开代码找到订单服务可以看到已经有了 RocketMQ 的配置

rocketmq.name-server=192.168.25.135:9876;192.168.25.138:9876

rocketmq. producer. group=orderProducerGroup

之前也配置过消费的消息只不过消费方是在处理订单的下单异常这类消息

mq. order . consumer . group . name=order orderTopic. _cancel _group

mq . order . topic=orderTopic

mq . order.tag. cancel=order_ cancel

重新加上跟支付相关的消费,topic 要和 payTopic 跟消息的发送方 Topic 保持一致

mq. pay. topic=payTopic

mq. pay. consumer . group. name=pay_payTopic_group

编写 listener,PaymentListener。

image.png

package com. itheima . shop. mq;

import org . apache. rocketmq . common.

message .MessageExt;

import org . apache . rocketmq. spring. core . RocketMQL istener;

//子类两个都可以接收当前的消息发送的是 message而 MessagExt 是它的子类

//配置属性

@Slf4j 日志

@Component 注解

//通过广播的方式消费消息

@RocketMQMessageListener(topic = "${mq . pay . topic}" ,consumerGroup = "${mq. pay. consumer.

group .name}”,messageModel=MessageModel.

BROADCASTING)

public class PaymentListener implements

RocketMQListener <MessagExt>{

@Autowired

private TradeOrderMapper orderMapper;

@Override

public void onMessage(MessageExt messageExt) {

Log. info("接收到支付成功消息");

try{

//1.解析消息内容

String body = new String( messageExt . getBody(),

charsetName: "UTF-8");

//进行转换

TradePay tradePay, = JSON. parseObject(body,

TradePay.class);

//2.根据订单 ID 查询订单对象

TradeOrder tradeOrder=orderMapper.

selectByPrimaryKey(tradePay. getOrderId());

//3.更改订单支付状态为已支付

订单表中有订单的状态,pay_ status支付的状态

image.png

tradeOrder . setPayStatus (ShopCode . SHOP_ ORDER_ PAY_ STATUS_ IS_ PAY. getCode());

//4.更新订单数据到数据库

orderMapper . updateByPrimaryKey(tradeOrder);

Log. info("更改订单支付状态为已支付");

}catch (UnsupportedEncodingException e) {

e. printStackTrace();

}

}

}

订单支付成功后在订单服务中通过消费消息的方式更改当前订单支付的状态

(2)小结

在订单微服务中加了一个消息的消费者目的是主要用来接收支付成功的消息在配置文件中加了当前消息的topic 主题起了消费者的组名编写一个 listener实现 rocketmqlistener监听当前的 topic指定组名以及当前消息的模型 BROADCASTING,解析消息得到消息体消息的内容是 tradepay从中得到 orderid查询出当前的order 对象更改支付状态为已支付把它更新到数据库这就是接收到支付成功的消息整个订单微服务中的处理

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
705 0
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
2204 0
|
负载均衡 微服务
微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
1098 1
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
562 1
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
612 1
|
SpringCloudAlibaba Java 持续交付
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
2118 1
SpringCloud01微服务课程导学,微服务功能用户,支付,购物车,积分,优惠卷,短信功能越来越多
SpringCloud01微服务课程导学,微服务功能用户,支付,购物车,积分,优惠卷,短信功能越来越多
|
Java 微服务 Spring
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
2981 0

热门文章

最新文章