1.消息队列的作用与场景
2.Channel 和vhost 的作用是什么?
Channel:减少TCP 资源的消耗。也是最重要的编程接口。
Vhost:提高硬件资源利用率,实现资源隔离。
3.RabbitMQ 的消息有哪些路由方式?适合在什么业务场景使用?
Direct、Topic、Fanout
4.交换机与队列、队列与消费者的绑定关系是什么样的?多个消费者监听一个队列时,消息会重复消费吗?
(1)交换机与队列、队列与消费者的绑定关系都是多对多。
(2)当一个队列有多个消费者时,会采用轮询方式平均分发,不会重复消费。
5.无法被路由的消息如何处理?
可以选择丢弃或用备份交换机(alternate-exchange)接收。
6.消息在什么时候会变成Dead Letter(死信)?
(1)消息过期;
(2)消息超过队列长度或容量;
(3)消息被拒绝并且未设置重回队列。
7.RabbitMQ 如何实现延迟队列?
(1)基于数据库+定时任务;
(2)或者消息过期+死信队列;
(3)延迟队列插件。
8.哪些情况会导致消息丢失?怎么解决?
从消息发送的整个流程分析:RabbitMq学习笔记(六)高级特性之消息的可靠投递、消息确认机制
9.一个队列最多可以存放多少条消息?
取决于硬件设备。
10.可以用队列的x-max-length 最大消息数来实现限流吗?例如秒杀场景。
不能,因为会删除先入队的消息,这样是不公平的。
11.如何提高消息的消费速率?
增加消费者数量。
12.AmqpTemplate 和RabbitTemplate 的区别?
Spring AMQP 是Spring 整合AMQP 的一个抽象。Spring-Rabbit 是一个实现。
13.如何保证消息的顺序性?
一个队列只有一个消费者。
14.MQ选型分析
可根据以下因素进行比较与权衡:
使用和管理:API、与Spring集成、管理控制台、权限、安全、监控、扩展性、社区支持等。
性能:并发性、消息吞吐量、消息堆积能力等。
功能:事务性消息、顺序性消息、消息重试、死信队列、优先级队列、延迟队列等。
15.设计一个MQ的思路
最基本的是要能支持消息的发送和接收,需要涉及到网络通信就一定会涉及到NIO;
消息的可靠性存储(持久化方式);
消息的有序性;
是否支持事务消息;
消息收发的性能,对高并发大数据量的支持;、
消息的确认机制,如何避免消息重发;
是否支持集群;
是否支持多协议;
是否跨语言。
参考链接:https://hujinyang.blog.youkuaiyun.com/article/details/100171256
本文介绍了RabbitMQ中的关键概念,如Channel用于减少TCP资源消耗,Vhost实现资源隔离。消息路由方式包括Direct、Topic和Fanout,适用于不同业务场景。交换机与队列、队列与消费者绑定为多对多,多消费者时消息通过轮询分发,不重复消费。死信消息产生于过期、超出队列限制或被拒绝不重回队列的情况。延迟队列可通过消息过期或死信队列实现。消息丢失可能发生在发送流程中,可通过消息确认机制防止。队列大小取决于硬件,x-max-length不适合限流。提高消费速率可增加消费者数量。AmqpTemplate与RabbitTemplate分别是SpringAMQP的抽象和实现。确保消息顺序性则需要单一消费者。MQ选型考虑因素包括API、性能、功能等。设计MQ需考虑消息发送、存储、顺序性、事务性、性能、集群支持等要素。
3868

被折叠的 条评论
为什么被折叠?



