rabbitMQ的一个应用案例及解决方案

Server 林涛 12445℃ 0评论

场景如下

  1. APP的聊天功能基于环信
  2. 符合一定条件的会员要与自己直接推广的会员,创建群组.互动.
  3. 创建群组,登记环信用户.用户加群.都需要发起CURL进行API操作.需要一定时间.

###现阶段
处理实现方式为用户登入时执行统一的处理逻辑

  1. 判定是否符合条件,是否建群,如果没有则自动创建群组
  2. 判定自己推广的会员是否在环迅登记,没有则处理登记
  3. 判定自己推广的会员是否在群,没有则自动加群

这种方式设计最简单,代码位置不分散.比较好调试.当然了..问题也比较致命.
问题出现是这样的.有两个问题.
假设设自己所推广的用户量很大.那么登入的时候.很有可能会失败,即便不大,也会导致延迟.恩..至于这个问题带来的客户的用户流失,投诉,什么的…就不说了.


###新方案
新方案的目标是…

  1. 登入没延迟
  2. 建群尽量及时

###实现方法

  1. 用户在环信做登记.实际上可以在注册环节即可开始.注册公共后,会员在环信上登记.这样可以避免出现高峰.即一个推广人对若干的被推广人产生并发.由于调用API也是需要耗费实现.所以注册后,要送一个消息到消息队列.这样就可以立即提示注册成功.
    我们确定一个交换机名.叫UserReg 只要有用户注册,就会送个消息出来.那么环信注册,只是其中一个消费者.后续如发送注册邮件或者注册短信.就可以由多个消费队列,从UserReg交换机取得消息,注册完成后,可判定上级是是否有群.如果有,在执行加入

  2. 群的创建 实际上群创建的时机,应该是在达到判定条件的时刻.而非下一次登录.所以,当达到判定条件.也发送一个消息.并由队列建群.由于队列在后端异步执行建群加群.所以用户端不会有卡顿的感知.

如需转载请注明: 转载自26点的博客

本文链接地址: rabbitMQ的一个应用案例及解决方案

转载请注明:26点的博客 » rabbitMQ的一个应用案例及解决方案

喜欢 (3)or分享 (0)
0 0 投票数
文章评分
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x