RabbitMQ的理解
约 366 字大约 1 分钟
消息队列RabbitMQ理论
2025-03-07
RabbitMQ有Connections连接、Channels信道、Exchanges交换机、和存储消息的Queues队列。
基础理解
Connections连接 表示客户端与RabbitMQ之间的TCP连接;
Channels信道
客户端与RabbitMQ建立了连接之后,会分配一个AMQP信道Channel;
一个通信的通道;
一个Connection连接可以有多个Channel(便于客户端进行多线程连接);
Exchanges交换机
主要功能是用于消息的转发,根据不同的规则转发到对应的队列当中;
Queues队列
用于消息实际存储转发的FIFO数据结构;
Queue队列类型
Classic普通经典队列
不需要交换机
当一个队列有多个消费者时,一个消息只会由一个消费者消费(竞争的消费者模式)
默认是轮询,即会将消息轮流发给多个消费者(测试的是每个消费者发送5次),对消费比较慢的消费者不公平
可采用公平分配,即能者多劳channel.basicQos(1);// 限定:发送一条信息给消费者A,消费者A未反馈处理结果之前,不会再次发送信息给消费者
Aboolean autoAck = false;// 取消自动反馈 channel.basicConsume(QUEUE_NAME, autoAck, consumer);// 接收信息channel.basicAck(envelope.getDeliveryTag(), false); // 反馈消息处理完毕
Quorum仲裁队列
Stream流式队列