Java 最常见的 208 道面试题:第十四模块答案 -Rabbitmq

135.RabbitMQ的使用场景有那些
答案:1跨系统的异步通讯,所有需要异步交互的地方都可以使用消息队列,就像我们除了打电话以为还需要发短信,电子邮件的形式交流
2多个应用之间的耦合,由于消息是平台无关和语言无关的,而语义上也不在是函数调用,因此更适合作为多个应用之间的松耦合的接口,基于消息队列的耦合不需要发送方和接收方同事在线,在企业应用集成中,文件传输,共享数据库,消息队列,远程过程调用都可以作为集成的方法.
3应用内的同步变异,比如订单处理,就可以有前段应用将订单信息放到队列,后端应用从队列里一次获得消息处理,高峰时的大量订单可以积压在队列里慢慢处理,由于同步通常异味着阻塞,而大量线程的阻塞会降低计算机的性能
4消息驱动的架构,系统分解为消息队列和消息制造者和消息消费者,一个处理流程可以根据需要拆成多个阶段,阶段之间用队列链接起来,前一个阶段处理的结果放入队列,后一个阶段从队列中获取消息继续处理.
5应用需要更灵活的耦合方式,如发布订阅,比如可以制定路由规则
6跨局域网,甚至跨城市的通讯,比如北京机房于广州机房的应用程序通讯

136.rabbitmq有那些重要的角色
答案:生产者,消息的创建者,负责创建和推送数据到消息服务器,
消费者,消息的接收方,用于处理数据和确认消息,
代理,就是mq本身,用于扮演快递的角色,本身不生产消息,只是扮演快递员的角色

137.rabbitmq有那些重要的组件
答案:connectionFactory链接管理器,应用程序与rabbit之间建立链接的管理器,程序代码使用
channel信道,消息推送使用的通道
exchange交换器,用于接收分配消息
queue队列,用于存储生产者的消息
routingKey路由键,用于把生成者的数据分配到交换器上
bindingKey绑定键,用于把交换器的消息绑定到队列上

138.rabbitmq中vhost的作用是什么
答案:vhost可以理解为虚拟broke,即minirabbitmqserver.其内部均含有独立的queue,exchange,和binding等,最重要的是其拥有独立的权限系统,可以做到vhost范围的用户控制.从rabbitmq的安全角度,vhost可以作为不同权限隔离的手段.

139.rabbitmq的消息是怎么发送的
答案:首先从客户端必须连接到rabbitmq服务器才能发布和消费消息,客户端和rabbitserver之间会创建一个tcp链接,一旦打开并通过了认证,认证就是给你发送rabbit服务器的用户名密码,你的客户端和rabbitmq就创建了一条amqp信道channel,信道是创建在真是tcp上的虚拟连接,amqp命令都是通过信道发送出去的,每一个信道都会有一个唯一的id,不论是发布消息订阅队列都是通过这个信道完成的.

140.rabbitmq怎么保证消息稳定
答案:提供了事务功能,通过channel设置为confirm模式

141.rabbitmq怎么避免消息丢失
答案:消息持久化,
ack确认机制,
设置集群镜像模式,
消息补偿机制

142.要保证消息持久化成功的条件有那些
答案:声明队列必须设置持久化durable设置为true
消息推送投递模式必须设置持久化,delivervMode设置为2(持久)
消息已经到达持久化交换器
消息已经到达持久化队列
以上四个条件都满足才能保证消息持久化成功

143.rabbitmq持久化有什么缺点
答案:持久化的缺点就是降低了服务器的吞吐量,因为使用的是磁盘而非内存存储,可尽量使用ssd硬盘来解决吞吐量问题.

144.rabbitmq有几种广播形式
答案:三种
fanout,所有bind到此exchange的queue都可以接受消息
direct通过routingKey和exchange决定的那个唯一的queue可以接受
topic所有符合routingKey的routingKey所bind的queue可以接受

145.rabbitmq怎么实现延迟消息队列
答案:通过消息过期后进入死信息交换器,再由交换器转发到延迟消息队列,实现延迟功能
使用rabbitmq-delayed-message-exchange插件实现

146.rabbitmq集群有什么用
答案:高可用,高容量

147.rabbitmq节点类型有那些?
答案:磁盘节点,消息会存储到磁盘
内存节点,消息会存储到内存中,重启服务后消息丢失,性能高于磁盘节点

148.rabbitmq集群搭建需要注意哪些问题
答案:各节点之间使用link连接,此属性不能忽略
各节点使用的erlangcookie值必须相同,此值相当于秘钥的功能,用于各节点的认证
整个集群中必须包含一个磁盘节点.

149.rabbitmq每个节点是其他节点的完整拷贝吗
答案:不是
存储空间考虑,如果每个节点都拥有所有队列的完整拷贝,这样新增节点不但没有新增存储空间反而增加了冗余数据
性能考虑,如果每条消息都需要完整拷贝到每一个集群节点,那么新增节点并没有提升消息处理能力

150.rabbitmq集群中唯一一个磁盘节点崩溃会发生什么情况
答案:不能进行以下操作
不能创建队列
不能创建交换机
不能创建绑定
不能添加用户
不能更改权限
不能添加和删除集群节点

151.rabbitmq对集群节点停止顺序有要求吗
答案:rabbitmq对集群的停止的顺序是有要求的,先关闭内存节点,最后关闭磁盘节点,如果顺序搞错会造成消息丢失.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值