RabbitMQ 队列详解

4 篇文章 0 订阅

https://www.cnblogs.com/ysocean/p/9251884.html

https://blog.csdn.net/qq_36838191/article/details/79914274

https://blog.csdn.net/qq_40378034/article/details/89714887  借鉴来源
 

实际上对于Mq来说消息队列的使用才是最为关键,毕竟作为消息的存储体,就像redis保存缓存一样

队列在数据结构的说明,先进先出,但是当消费者获取消息失败,或者队列消息过期,再或者是队列消息已满 这些都和队列的设置有关联

和交换机相似,先讨论队列的类型

1>  点对点  即 一个消费者对应一个生产者,专属队列

生产端------建立通道(信道 channel)---->队列-------建立通道(信道 channel)----->消费端

2>工作队列模式Work Queue

一个生产者对应多个消费者,但是一条消息只能有一个消费者获得 

所以又叫做    竞争消费者模式

直接举例说明,一个生产端,生产了十条消息,只有两个消费端,那么默认情况下,不做特别设置的情况下,两个消费端各自获取五条消息,即便一个消费端获取一条消息后sleep 1秒 另一个消费端获取一条消息后sleep2秒,两个消费端效率不同的情况下,依旧各自获取五条消息
三个消费端的话,划分始终是4,3,3
为了改变这种默认获取的方式,

channel.basicQos(1); 限制当先消费者可获取消息数量(要在声明队列结束后使用)

从而控制消费效率,实现负载均衡

3>发布/订阅模式

这个可能是消息队列中最重要的队列了,其他的都是在它的基础上进行了扩展。

功能实现:一个生产者发送消息,多个消费者获取消息(同样的消息),包括一个生产者,一个交换机,多个队列,多个消费者。

 思路解读(重点理解): 

(1)一个生产者,多个消费者

(2)每一个消费者都有自己的一个队列

(3)生产者没有直接发消息到队列中,而是发送到交换机

(4)每个消费者的队列都绑定到交换机上

(5)消息通过交换机到达每个消费者的队列

注意:交换机没有存储消息功能,如果消息发送到没有绑定消费队列的交换机,消息则丢失。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值