本专题承接上一专题 Java面试题总结 - 【第三章】Java 主流框架篇
135. RabbitMQ 的使用场景有哪些?
136. RabbitMQ 有哪些重要的角色?
RabbitMQ 中重要的角色有:生产者、消费者和代理:
137. RabbitMQ 有哪些重要的组件?
138. RabbitMQ 中 vhost 的作用是什么?
vhost:每个 RabbitMQ 都能创建很多 vhost,我们称之为虚拟主机,每个虚拟主机其实都是 mini 版的RabbitMQ,它拥有自己的队列,交换器和绑定,拥有自己的权限机制。
139. RabbitMQ 的消息是怎么发送的?
首先客户端必须连接到 RabbitMQ 服务器才能发布和消费消息,客户端和 rabbit server 之间会创建一个 tcp 连接,一旦 tcp 打开并通过了认证(认证就是你发送给 rabbit 服务器的用户名和密码),你的客户端和 RabbitMQ 就创建了一条 amqp 信道(channel),信道是创建在“真实” tcp 上的虚拟连接,amqp 命令都是通过信道发送出去的,每个信道都会有一个唯一的 id,不论是发布消息,订阅队列都是通过这个信道完成的。
140. RabbitMQ 怎么保证消息的稳定性?
141. RabbitMQ 怎么避免消息丢失?
142. 要保证消息持久化成功的条件有哪些?
以上四个条件都满足才能保证消息持久化成功。
143. RabbitMQ 持久化有什么缺点?
持久化的缺地就是降低了服务器的吞吐量,因为使用的是磁盘而非内存存储,从而降低了吞吐量。可尽量使用 ssd 硬盘来缓解吞吐量的问题。
144. RabbitMQ 有几种广播类型?
145. RabbitMQ 怎么实现延迟消息队列?
延迟队列的实现有两种方式:
146. RabbitMQ 集群有什么用?
集群主要有以下两个用途:
147. RabbitMQ 节点的类型有哪些?
148. RabbitMQ 集群搭建需要注意哪些问题?
149. RabbitMQ 每个节点是其他节点的完整拷贝吗?为什么?
不是,原因有以下两个:
150. RabbitMQ 集群中唯一一个磁盘节点崩溃了会发生什么情况?
如果唯一磁盘的磁盘节点崩溃了,不能进行以下操作:
唯一磁盘节点崩溃了,集群是可以保持运行的,但你不能更改任何东西。
151. RabbitMQ 对集群节点停止顺序有要求吗?
RabbitMQ 对集群的停止的顺序是有要求的,应该先关闭内存节点,最后再关闭磁盘节点。如果顺序恰好相反的话,可能会造成消息的丢失。
152. kafka 可以脱离 zookeeper 单独使用吗?为什么?
kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。
153. kafka 有几种数据保留的策略?
kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。
154. kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?
这个时候 kafka 会执行数据清除工作,时间和大小不论那个满足条件,都会清空数据。
155. 什么情况会导致 kafka 运行变慢?
156. 使用 kafka 集群需要注意什么?
至此,消息队列常见的面试题与大家分享完毕了,下一专题我将继续为大家分享 “有点水准面试”的面试题,Java 性能优化