RabbitMQ-支付通知业务流程

一,背景

订单服务作为通用服务在订单支付成功后需要将支付结果通知给与订单服务对接的其它微服务。

为了保证通知过程的简便还要保证消息全部到达消费服务,采用发布订阅的方式通知支付结果。

学习中心服务:对收费课程选课需要支付,与订单服务对接完成支付。

学习资源服务:对收费的学习资料需要购买后下载,与订单服务对接完成支付。

订单服务完成支付后将支付结果发给每一个与订单服务对接的微服务,订单服务将消息发给交换机,由交换机广播消息,每个订阅消息的微服务都可以接收到支付结果,根据支付结果的内容去更新自己的业务数据。

学习中心等微服务收到消息并处理完成通过消息队列回复订单服务。

流程如下,

二,分析

订单服务一方面通过广播向其他服务发送订单支付成功的通知,另一方面需要监听学习中心服务的

发送的“处理成功”的通知,所以说在订单服务我们需要创建订单通知的交换机,以及支付返回的消息队列。

另外,学习中心服务监听支付成功通知的队列。

三,分布式任务调度xxl-job

XXL-Job的工作原理可以概括为以下几点:

1.调度中心的设计。调度中心是一个独立的Web服务,负责触发定时任务的执行,并提供页面操作以管理定时任务的触发逻辑,它依赖于数据库存储数据,并支持集群模式,同一个集群中的调度中心实例之间不进行通信,而是通过数据库共享数据。
2.执行器的角色。执行器用于执行具体的任务逻辑,可以理解为普通的服务,每个执行器有自己的名称,通常设置为服务名,执行器启动时会向调度中心注册自己,并定时发送心跳以保持连接,如果执行器正常关闭,会主动告知调度中心注销。
3.任务的执行。调度中心通过定时循环获取即将触发的任务(Trigger),并将它们绑定到相应的JobHandler上,然后包装成工作线程执行。任务可以分布在不同的执行器中执行,执行器根据配置的路由策略选择执行任务。
4.故障处理和负载均衡。XXL-Job提供了丰富的路由策略,如第一个、最后一个、轮询、随机等,以及故障转移策略,一旦执行器集群中出现故障,可以自动Failover到其他正常的执行器。
时间和任务管理。XXL-Job使用时间轮(Time Wheel)来调度一批任务,这些任务的执行时间精确到秒,调度中心负责管理调度信息,包括任务的创建、更新、删除和报警等,同时支持监控调度结果和执行日志。
综上所述,XXL-Job通过将调度行为抽象为公共平台(调度中心),并将任务分散管理(执行器),实现了调度和任务的解耦,提高了系统的整体稳定性和扩展性。

四,故障排查

订单扫描支付成功向本地消息表插入记录,但是发现记录没有被消费成功。

在向支付通知发送消息和学习中心服务接收消息的地方分别打上断点,发现消息可以成功发送,查看rabbitmq管理平台,消息在队列里面。

但是没有进入到接收消息的地方,说明就是他没有成功监听到这个队列。

第一个想到的是队列,交换机的名称有没有对上,发现没有问题。

原因比较nc,就是学习服务没有重启,自然没监听上。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值