联合上一篇的遇到bug如何查日记
我们来学习下,如何利用RabbitMQ管理台来测试MQ;
还是之前的例子,用图片简朴介绍下逻辑
01 为什么我们要测MQ?什么时候测?
当认证乐成之后,没有更新账号的认证状态,涉及到MQ的地方都有大概产生bug:
- 认证系统没有发MQ;
- 认证系统发送的MQ数据错误或字段缺失;
- 账号系统没有斲丧MQ;
- 账号系统斲丧了MQ,但是更新认证状态失败;
除了查询服务器日记之外,MQ背景也可以帮助我们定位MQ问题;
02 RabbitMQ工作原理
在讲解如何查询之前,得先了解下MQ的工作原理:
其中,中心的Broker表示RabbitMQ服务,每个Broker里面至少有一个Virtual host虚拟主机,每个虚拟主机中有自己的Exchange互换机、Queue队列以及Exchange互换机与Queue队列之间的绑定关系Binding。producer(生产者)和consumer(斲丧者)通过与Broker建立Connection来保持毗连,然后在Connection的基础上建立若干Channel信道,用来发送与接收消息。
上面是官方解释,我用小白语言翻译一遍,就是如下图:
03 RabbitMQ管理背景
讲完原理,再看下背景长什么样子:
选择一个互换机,可以查看到有哪些路由,哪些队列绑定了哪些路由;
可以新增队列、手动触发发送mq消息;
可以看到队列的堆积环境,及消息处理速度;(如果有堆积,且一直在新增,阐明并没有被斲丧)
可以新增自己的队列,绑定互换机及路由;
04 分析问题
现在要开始分析了:
1、认证MQ发了没?认证系统发送的MQ数据错误或字段缺失;
由于MQ被斲丧了之后,队列就清空了,如果发送和斲丧都没问题的话,那账号队列是空的,无法查询到;
这个时候,我们可以新增一个自己的队列,去绑定认证的互换机路由;由于自己新增的队列没有程序去斲丧,会一直积存,就可以通过自己新增队列查询消息;
如果能查询到消息,阐明认证是发送了的;
通过get message而且还可以看到消息内容是否正确,有无字段缺失等;
如果没有发送,那么在常规的测试场景下,就无法测试账号的斲丧是否有bug,我们可以在互换机详情页,手动推送MQ,去看账号是否变动认证状态;(但是这个时候欠好把握MQ的消息格式,得去问开辟)
2、账号斲丧了MQ吗?
这个时候只需要去看账号的队列是否有积存就可以了;
3、账号系统斲丧了MQ,但是更新认证状态失败;
到这一步在MQ阶段就收尾了,就去查询其他问题了,有没有报错之类的(上篇已讲过);
好了,到此MQ的介绍就已完结;实在关于RabbitMQ管理背景的讲解只是冰山一角,这里只列出了与本文排查有关的,大家可以再多去了解一下~ 欢迎大家一起探讨~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |