菜鸟询问一个业务的问题

2020-07-02 11:15:25 +08:00
 QZFCANBA

项目的话是 springboot+springcloud 支付系统中,微信 /支付宝在支付成功后,会通知到 notifyurl,在回调方法里把支付的结果发条消息到 MQ 里,订单系统去监听,然后修改订单状态。 那么如果要增加用户积分、发货啊这些后续操作的话,是不是需要订单系统发送消息,让积分系统、物流系统去监听来处理各自的业务?或者是有什么其他好的办法么?

1926 次点击
所在节点    Java
10 条回复
QZFCANBA
2020-07-02 11:20:15 +08:00
还是用 feign 在订单系统里,去调用其他的服务来完成,这个方案是不是不大好
RedBeanIce
2020-07-02 13:46:55 +08:00
分布式调用吗。。。emmmmm
gz911122
2020-07-02 13:50:14 +08:00
增加用户积分、发货这些服务自己去订阅消息..

支付系统支付成功后写消息就完事了. 别走远程调用.
后期需要订阅这个事件的部门 /团队可能会很多, 让他们自己订阅消费去吧..
kop1989
2020-07-02 13:51:27 +08:00
如果三个微服务分别去监听,如果某个业务出现异常,如何保证数据是平的?
比如积分系统报错没积上,但是订单系统和物流系统正常响应了。怎么再去修正补录积分?
QZFCANBA
2020-07-02 14:12:37 +08:00
@gz911122 直接在支付系统里发吗 ?还是麻烦点,订单系统监听消息后,修改好订单状态,再从订单系统里发消息到 MQ
QZFCANBA
2020-07-02 14:13:34 +08:00
@kop1989 这个没考虑到。。。裂开
gz911122
2020-07-02 14:40:28 +08:00
@QZFCANBA

直接支付系统发啊.

细节一些就是, 支付和订单状态流转是一个服务, 这样方便直接本地事务. 规避了一堆分布式事务的破事,.
具体的订单查询啊 统计, 可以抽取个订单服务出来, 但是这个订单服务是不涉及订单状态流转的.
gz911122
2020-07-02 14:42:18 +08:00
@QZFCANBA #6

积分系统消费失败后的补偿是 积分服务的事情, 交易这边就不用操心了..
该怎么记录失败的, 怎么事后恢复 等等...让积分那边去操心就好了.

不然每个需要交易数据的, 岂不是都要交易系统操心了. 不太合理.
QZFCANBA
2020-07-02 14:49:17 +08:00
@gz911122 懂了 感谢老哥!
yinzhili
2020-07-02 19:43:18 +08:00
@kop1989 像这种业务场景,肯定是要每日对账的,可以做补偿冲正什么的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/686485

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX