H5W3
当前位置:H5W3 > 其他技术问题 > 正文

关于MQ的使用,有一点想不明白

在做用户注册的时候涉及到短信发送的服务,去网上查了查相关资料,发现大部分逻辑是这样的:
1.前端点击发送短信按钮
2.注册接口生成随机验证码缓存到Redis和MQ
3.短信接口从MQ获取信息并发送短信

这里我有一个疑问:
按照大多数逻辑来说当注册服务发送验证码以及手机号等信息给MQ之后应该已经返回给前台消息发送成功了,但是如果这个时候短信服务挂掉了或者说运营商那边出问题了,应该怎么办?而且MQ存在是为了解耦和异步,那这样并没有体现出来呀?

回答

不考虑本地流程,短信在运营商那也是异步,不保证用户能收到,这里出错的原因可能很多,如:关机,欠费,无信号,用户电信黑名单,用户端软件拦截等等。发短信出错的环节不可胜数。从而基本上无法做到得到真正的发送成功的反馈。

发送成功了,仅是前端处理了,不意味着收到成功了。

怎么办?所以才都要设计各种重发的功能。

MQ为了解耦和异步?不已经是这样了吗?

有些消息队列是提供可靠性保证的,具体的技术细节可以网上找一下,一般是本地事务保证+重试+幂等接口,挺有意思的。

本文地址:H5W3 » 关于MQ的使用,有一点想不明白

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址