第二节 工作模式与应用场景

亮子 2021-07-06 12:22:54 17958 1 1 0

1、工作模式

图片alt

(1)简单模式(sample)

图片alt

(2)工作模式(work)

图片alt

(3)订阅模式(fanout)

图片alt

(4)路由模式(direct)

图片alt

(5)主题模式(topic)

图片alt

2、为什么要选择 RabbitMQ

1)、RabbitMQ 是实现了 AMQP 标准的消息服务器;
2)、可靠性:RabbitMQ 的持久化支持,保证了消息的稳定性;
3)、高并发:RabbitMQ 使用了 Erlang 开发语言,Erlang 是为电话交换机开发的语言,天生自带高并发光环,和高可用特性;
4)、集群部署简单,正是应为 Erlang 使得 RabbitMQ 集群部署变的超级简单;
5)、社区活跃度高,根据网上资料来看,RabbitMQ 也是首选;

3、使用场景

1)应用解耦(异步处理)

上游系统处理完成之后,把数据消息写入消息队列中,业务逻辑完成;下游系统可以订阅消息队列,也可以自由的从消息队列拉取消息。上下游毫不关联。

2)同步调用

能够拿到下游系统异步处理的结果。

3)顺序调度

先进先出原则去调度有严格先后顺序的任务。

4) 通知分发

指消息多方分发,例如订单系统的下单消息几乎要分发给所有的其他系统,主要利用 Exchange 的 fanout 类型。

5)高并发缓存

我们可以把所有的请求全部存入到队列(队列的存储能力理论上无限的,主要受制于空间),然后再批量取出能处理数量的消息处理(主要利用消息队列作为消息存储容器的特性)。

6)并发限流

高并发的情况下,只接受指定数量的请求,队列满了就直接拒绝(主要利用消息队列的设置队列长度特性)。

7)延迟任务调度

为消息设置等同延时的有效期,消息过期后进入到死信队列,然后再到死信队列取消息处理。

4、RabbitMQ 工作机制

RabbitMQ 实现了AMQP 0-9-1 标准。作为中间件协议,AMQP(高级消息队列协议)是一个用于在分布式系统中存储转发消息进行通信网络协议。

图片alt

在上面的使用场景分析中我们可以看出来,消息中间件(brokers)主要承担一个消息(message)容器的角色,它接收从发布者(publishers)亦称生产者(producers)那儿来的消息,并根据既定的路由规则,把接收到的消息发送给处理消息的消费者(consumers)处理——实际上 RabbitMQ 是生产者(producers)投递到交换机(exchange),exchange 按照路由规则分发到特定的队列(queue),再推送给消费者(consumers),或者消费者(consumers)主动拉取。

图片alt

示意图中所示,消息由 “生产者”(producer / publisher)通过 “消息代理”(broker)传递到 “消费者”(consumer),具体而言:
1、消息由 “生产者” 发布到 “交换器”(exchange);

2、“交换器” 根据 “绑定”(binding),将消息路由(分发)到队列(queue);
3、“消费者” 获取 “队列” 中的消息。
4、AMQP 中,“队列”、“交换器”、“绑定”,被称为 “实体”(entity)。
5、“消息确认” :允许 “消费者” 收到消息时,通知 “消息代理”,此时,消息将被 “消息代理” 从 “队列” 中移除。