RabbitMQ技术原理 知识问答
下面内容,为本人在职期间经历RabbitMQ培训后,由公司前辈给出的一系列提问问题。本人根据问题,事后经过整理和查询逐条亲自做的参考回答。在此先敬谢前辈。
部分答案是自己搜索的,可能存在不准确的。
- RabbitMQ 是由哪种语言开发的?
- erlang
- RabbitMQ 支持的消息推送方式有哪几种?
- 点对点和发布订阅
- RabbitMQ 依赖哪种机制,实现多个节点的队列数据同步?
- 镜像队列
- RabbitMQ 的应用场景有哪些?
- 应用解耦、流量削峰、发布订阅、异步处理
- RabbitMQ Exchange type包含哪几类?
f- anout、direct、headers、topic - RabbitMQ 消息包含哪两部分?
- 消息包含Header和Body,Header中包含消息自定义参数数据,body是具体的消息内容
- RabbitMQ 点对点消息发送,发送者直接将消息发送至Queue,消费者从Queue消费消息,是否正确?
- 并不是直接推送到queue,而是先发送至对应的Exchange,然后由Exchange根据不同策略推送到指定的队列
- RoutingKey和BindingKey有什么关系?
- RoutingKey是存储在消息中,BindingKey存储在MQ中。
- Exchange在与多个Message Queue发生Binding后会生成一张路由表,路由表中存储着Message Queue所需消息的限制条件,即Binding Key。
- 当Exchange收到Message时会解析其Header得到Routing Key。
- Exchange根据Routing Key与Exchange Type将Message路由到Message Queue。
- RabbitMQ中保存消息的是:Exchange、Queue、Channel?
- 并不是直接推送到queue,而是先发送至对应的Exchange,然后由Exchange根据不同策略推送到指定的队列。
- RabbitMQ 消费确认机制ACK,分为哪两种 ?
- 手工,和自动的。手工确认是消息被消费者接收到以后,消费者发送ACK请求给RabbitMQ,RabbitMQ会将消息从RabbitMQ删除
- abbitMQ 镜像队列的选举机制,如果master失效,选择哪个节点作为master?如果slave节点失效,有什么影响?
- 若master节点失效,则 镜像队列会自动选举出一个节点(slave中消息队列最长者)作为master,作为消息消费的基准参考。若slave节点失效,镜像队列集群中其他节点的状态无需改变。
- RabbitMQ 的最小权限管理单位是什么?
- VIRTUAL HOST
- RabbitMQ 镜像同步策略,如果要给EC前缀的队列添加镜像,镜像策略匹配模式是什么?
- 镜像的配置是通过 policy 策略的方式
- all 所有的节点都将被同步
- exactly 指定个数的节点被同步
- nodes 指定的名称的节点被同步
- RabbitMQ 事务分为三个阶段?
- txSelect 用于将channel设置成事务模式 txCommit 提交事务 txRollBack 回滚事务
- RabbitMQ Connection和Channel的关系?
- channel是依赖connection存在,connection是客户端与RabbitMQ之间建立的TCP连接。
- 使用TaskSender执行消息发送,如何实现?
- Step1. 添加程序集引用:
- Step2. 获取任务发送者服务:
- Step3. 构造失败重试任务:
- Step4. 同步/异步发送提交任务:
- 完整:
考后错题笔记
考试名称:RabbitMQ技术原理考试
分数:81(计分制:百分制)
考试时间:2018-09-06
17:00—2018-09-06 17:26
- RabbitMQ的消息持久化依赖于( )? (C)×0.0分
A. AutoDelete B.Durabl C. Exclusive
正确答案:B - RabbitMQ 消息确认ACK分为自动确认和手动确认两种,对于自动确认,如果消息被消费者接收成功,那么该消息在RabbitMQ中是否仍然存在( )?(B)√3.0分
A. 存在 B. 不存在 - Virtual Host是RabbitMQ的基本权限管理单位,可以在一个Virtual Host中新建两个名称相同的队列?(B)√3.0分
A. 正确 B. 错误 - RabbitMQ消息被一个消费者接收,但未处理,另外一个消费者可以获取该消息处理( )?(A)×0.0分
A. 正确 B. 错误
正确答案:B - RabbitMQ 队列名称不区分大小写?(A)×0.0分
A. 正确 B. 错误
正确答案:B