请问下这种业务如何设计解耦?

1. 问题描述?

目前业务上会使用快递,比如A服务、B服务等等会使用快递,日后可能还会有新的服务。我的这些服务都会依赖到快递的一些回调事件比如签收等。并且这些服务只会存储下快递单号,不会过多存储快递的其他信息。
目前我能想法的一种做法是,在快递签收的回调事件中,通过Laravel的Event事件,然后分别设置A、B服务的Listener,然后分别通过快递单号去查询
例如:

  • A服务查询是否有该快递单号,然后做A具体业务,没有跳过
    
    B服务查询是否有该快递单号,然后做B具体业务,没有跳过

2. 您期望得到的结果?

想请教大家是否有其他更好的做法
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 4

加多一层, 把 服务 和 快递 作为单独的一个提供服务或需要服务的应用,由这一层提供中介的服务。

这样的好处是, 服务 和 快递, 只做自己的事。比如 快递 不用做推送给服务A之类逻辑,而是告诉加多的这层。 至于要怎么处理,正是你现在要写的逻辑。

如果 快递 崩了,不会影响到服务,因为解耦了,就算中间层崩了,不会影响到 服务 或 快递正常业务,它一个中介的,没有直接 侵入 服务 或 快递的领域, 修复之后,数据都还在(指快递数据 或者服务者相关的数据)。

2个月前 评论
guanguans 2个月前

一般就是用队列,快递签收事件写入队列,要消费的服务自己去拉数据消费

2个月前 评论

a,b服务都要调用快递c查询接口,是否已签收的回调,快递信息更新,如果有个快递服务中间表和各类服务和快递关联起来,可以使用队列或者在事件回调中直接查询中间表关联的服务用户通知和更新对应数据

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!