发送确认订单失败消息演示|学习笔记

简介: 快速学习发送确认订单失败消息

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)发送确认订单失败消息】学习笔记,与课程紧密联系,让用户快速学习知识。

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


发送确认订单失败消息


内容介绍:

一、讲解

二、小结


一、讲解

代码要保证扣减库存、扣减优惠券以及使用余额、确认订单的执行原则性。

如果一旦出现异常,会对异常进行 catch 处理。在 catch 当中,要去发送订单 id 、优惠券的 id、用户的 id 、余额。根据用户 id 查用户对象,才能去回顾余额。

还有要去回对的商品信息,商品的 id 以及商品的数量,这些信息都是需要以消息的方式给它发送到 MQ。

这些信息通常可以再去创建消息的 MQEntity 类。接着去封装分析的信息,设置到属性,将来直接去处理对象。

输入Long orderID

Long couponID

Long userID

Long userMoney

Long goodsID  

Long Integer goodsNum

这些属性和之前在原始的 pogu 类当中保持一致

提供进行消息发送的实体类后,把方法生成出来。生成后,可以在 case 当中,

MQEntity mqEntity=new MQEntity();

然后去设置这些数据

image.png

修改上述代码类型为BigDecimal,然后进行封装。

还有商品的id :mqEntity.setGoodsID(order.setGoodsID ())

商品数量:mqEntity.setGoodsNum(order.setGoodsNumber ())

优惠券:mqEntity.setCouponID(order.getCouponsID())

把要去进行回退的信息都封装 MQEntity,去发送消息即可。

可以去封装私有的方法,叫做新的 sendcancelorder 。首先你要去设置 topic 然后再来 tag。还有 keys, 然后消息的内容。消息的内容可以将 MQnz 转换成字符串发送过去。

image.png

tag 可以配置到的配置文件里面去,主题的名字不要进行硬编码,把它放置到涉及到的 properties 配置文件里边,将来读取就行。

那现在数据想在 Java 代码当中使用,首先要把它注入。

输入String topic

private String tag 

直接读取配置文件。

直接复制放入 topic 和 tag 配置文件。

第三个是业务标识 key,订单作为当前的业务标识 keys。

key 是 Long 类型,为传输方便,换成字符串。

然后将发送消息的方法实现出来。

输入*方法是用来去发送的订单确认失败消息。

去创建 message 的对象,注意是 lock  MQ 的 message。然后把参数设置进去。

有消息的对象后,就可以去发送。首先去注入注意模板类 RocketMQTemplate 。注入进来之后,使用它就可以去发送。

image.png

去传送 message 的时候,发现有异常。message 报错,是因为拿到 pro  doer ,然后再去发送,就没有问题。然后有异常把异常去处理,

或者是处理异常往上抛也可以。抛出去后进行相关处理,catch 的块放大。

整个消息发送过去之后,catch 当中进行 return 消息发送的结果 message 。


二、小结

整个代码结构是发生异常之后,创建消息的 pogo 类的对象,封装消息的内容。然后去发送订单确认失败的消息。然后封装发送消息的代码。topic 、tag,keys 等等传递过来。发放完之后,做详细日程。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
支付系统34----支付成功异步通知,处理重复通知,我们在我们程序当中找到处理订单的processOrder方法,我们要在更新订单状态和记录日志之前,先处理重复通知
支付系统34----支付成功异步通知,处理重复通知,我们在我们程序当中找到处理订单的processOrder方法,我们要在更新订单状态和记录日志之前,先处理重复通知
|
7月前
|
Windows
微信消息实现自动推送--方式一 成功啦 进来学
微信消息实现自动推送--方式一 成功啦 进来学
682 1
|
消息中间件 NoSQL 数据库
订单超时未支付自动取消--实现简述
订单超时未支付自动取消--实现简述
248 0
|
小程序 开发工具 开发者
微信小程序订阅消息点了 “总保持以上选择、全部拒绝,不在询问” 无法再次弹出
微信小程序订阅消息点了 “总保持以上选择、全部拒绝,不在询问” 无法再次弹出
1453 0
|
消息中间件 RocketMQ 开发者
发送确认订单失败消息演示|学习笔记
快速学习发送确认订单失败消息演示
发送确认订单失败消息演示|学习笔记
|
消息中间件 缓存 算法
Springboot----项目整合微信支付(引入延迟队列实现订单过期取消以及商户主动查单)
介绍了如何使用RabbitMQ实现订单过期自动取消以及如何采用RabbitMQ实现商户主动向微信支付后台查询订单状态,一石二鸟。
549 0
Springboot----项目整合微信支付(引入延迟队列实现订单过期取消以及商户主动查单)
|
消息中间件 负载均衡 Java
下单消息的发送和接收案例|学习笔记
快速学习下单消息的发送和接收案例
223 0
下单消息的发送和接收案例|学习笔记
|
消息中间件 RocketMQ 开发者
测试发送消息和接受消息|学习笔记
快速学习测试发送消息和接受消息
144 0
测试发送消息和接受消息|学习笔记
|
消息中间件 存储 运维
【真实案例】消息消费失败如何处理?
在介绍消息中间件 MQ 之前,我们先来简单的了解一下,为何要引用消息中间件。 例如,在电商平台中,常见的用户下单,会经历以下几个流程。 当用户下单时,创建完订单之后,会调用第三方支付平台,对用户的账户金额进行扣款,如果平台支付扣款成功,会将结果通知到对应的业务系统,接着业务系统会更新订单状态,同时调用仓库接口,进行减库存,通知物流进行发货!
【真实案例】消息消费失败如何处理?
|
存储 消息中间件 缓存
消息列队有没有可能失败?在哪些环节可能失败,如何处理?
相信大家都使用过消息MQ,他可以很好地进行系统解耦,减低变成的复杂度,又可以进行削峰,增加系统在高并发的稳定性。那么使用MQ有哪些注意事项呢?是不是MQ就是万无一失呢?一条MQ消息从产生到消费,有没有可能失败?在哪些环节可能失败,如何处理? 一般来说,从生产者到MQ中间件是通过网络调用的,是网络调用就有可能存在失败。下面这些原因,都有可能造成MQ生产失败,例如网络波动,尽管生产者到MQ服务器之间是内网调用,并不意味着网络调用的成功率就是百分之百,内网调用也会遇到网络波动,造成调用超时或者失败。又如调用的MQ机器瞬间Crash掉,这也是有可能造成调用失败的。
消息列队有没有可能失败?在哪些环节可能失败,如何处理?