场景如下
- APP的聊天功能基于环信
- 符合一定条件的会员要与自己直接推广的会员,创建群组.互动.
- 创建群组,登记环信用户.用户加群.都需要发起CURL进行API操作.需要一定时间.
###现阶段
处理实现方式为用户登入时执行统一的处理逻辑
- 判定是否符合条件,是否建群,如果没有则自动创建群组
- 判定自己推广的会员是否在环迅登记,没有则处理登记
- 判定自己推广的会员是否在群,没有则自动加群
这种方式设计最简单,代码位置不分散.比较好调试.当然了..问题也比较致命.
问题出现是这样的.有两个问题.
假设设自己所推广的用户量很大.那么登入的时候.很有可能会失败,即便不大,也会导致延迟.恩..至于这个问题带来的客户的用户流失,投诉,什么的…就不说了.
###新方案
新方案的目标是…
- 登入没延迟
- 建群尽量及时
###实现方法
-
用户在环信做登记.实际上可以在注册环节即可开始.注册公共后,会员在环信上登记.这样可以避免出现高峰.即一个推广人对若干的被推广人产生并发.由于调用API也是需要耗费实现.所以注册后,要送一个消息到消息队列.这样就可以立即提示注册成功.
我们确定一个交换机名.叫UserReg 只要有用户注册,就会送个消息出来.那么环信注册,只是其中一个消费者.后续如发送注册邮件或者注册短信.就可以由多个消费队列,从UserReg交换机取得消息,注册完成后,可判定上级是是否有群.如果有,在执行加入 -
群的创建 实际上群创建的时机,应该是在达到判定条件的时刻.而非下一次登录.所以,当达到判定条件.也发送一个消息.并由队列建群.由于队列在后端异步执行建群加群.所以用户端不会有卡顿的感知.
如需转载请注明: 转载自26点的博客
本文链接地址: rabbitMQ的一个应用案例及解决方案
转载请注明:26点的博客 » rabbitMQ的一个应用案例及解决方案