【RabbitMQ】RabbitMQ七种队列模式简介(四)

1、简单模式(Hello World)

The simplest thing that does something

做最简单的事情,一个生产者对应一个消费者,RabbitMQ 相当于一个消息代理,负责将 A 的消息转发给 B 应用场景:将发送的电子邮件放到消息队列,然后邮件服务在队列中获取邮件并发送给收件人。

2、工作队列模式(Work queues)

Distributing tasks among workers (the competing consumers pattern)

在多个消费者之间分配任务(竞争的消费者模式),一个生产者对应多个消费者,一般适用于执行资源密集型任务,单个消费者处理不过来,需要多个消费者进行处理 应用场景:一个订单的处理需要 10s,有多个订单可以同时放到消息队列,然后让多个消费者同时处理,这样就是并行了,而不是单个消费者的串行情况。

注意:一条消息只能被一个消费者消费,不能被多个消费者重复消费;

3、订阅模式(Publish/Subscribe)

Sending messages to many consumers at once

一次向许多消费者发送消息,一个生产者发送的消息会被多个消费者获取,也就是将消息将广播到所有的消费者中。 应用场景:更新商品库存后需要通知多个缓存和多个数据库,这里的结构应该是:

  1. 一个 fanout 类型交换机扇出两个个消息队列,分别为缓存消息队列、数据库消息队列
  2. 一个缓存消息队列对应着多个缓存消费者
  3. 一个数据库消息队列对应着多个数据库消费者

4、路由模式(Routing)

Receiving messages selectively

有选择地(Routing key)接收消息,发送消息到交换机并且要指定路由 key ,消费者将队列绑定到交换机时需要指定路由 key,仅消费指定路由 key 的消息 应用场景:如在商品库存中增加了 1 台 iphone12,iphone12 促销活动消费者指定 routing key 为 iphone12,只有此促销活动会接收到消息,其它促销活动不关心也不会消费此 routing key 的消息

5、主题模式(Topics)

Receiving messages based on a pattern (topics)

根据主题(Topics)来接收消息,将路由 key 和某模式进行匹配,此时队列需要绑定在一个模式上,#匹配零个、一个词或多个词,*至少要有一个。 应用场景:同上,iphone 促销活动可以接收主题为 iphone 的消息,如 iphone12、iphone13 等

6、远程过程调用(RPC)

如果我们需要在远程计算机上运行功能并等待结果就可以使用 RPC,具体流程可以看图。 应用场景:需要等待接口返回数据。

7、发布者确认(Publisher Confirms)

Reliable publishing with publisher confirms

与发布者进行可靠的发布确认,发布者确认是 RabbitMQ 扩展,可以实现可靠的发布。在通道上启用发布者确认后,RabbitMQ 将异步确认发送者发布的消息,这意味着它们已在服务器端处理 应用场景:对于消息可靠性要求较高,比如钱包扣款

参考:

1、http://next.rabbitmq.com/getstarted.html

2、https://cloud.tencent.com/developer/article/1810753

posted @ 2022-01-21 14:22  二月无雨  阅读(61)  评论(0编辑  收藏  举报