学习笔记
Git
  • C#
  • F#
  • AspNetCore
  • EF Core
  • WPF
  • Tauri
  • IoTDB
  • Redis
  • Docker
  • Kubernetes
  • RabbitMQ
  • 日志

    • NLog的配置文件
Linux
基础设施
  • Vue

    • Vue基础
VS Code的插件与玩法
Rust
Python
  • Maven
  • Spring Boot
实际项目
我的博客
Git
  • C#
  • F#
  • AspNetCore
  • EF Core
  • WPF
  • Tauri
  • IoTDB
  • Redis
  • Docker
  • Kubernetes
  • RabbitMQ
  • 日志

    • NLog的配置文件
Linux
基础设施
  • Vue

    • Vue基础
VS Code的插件与玩法
Rust
Python
  • Maven
  • Spring Boot
实际项目
我的博客
  • RabbitMQ 快速启动
  • RabbitMQ工作模式

RabbitMQ的工作模式

HelloWorld

一个生产者将消息发送到队列,一个消费者接收

Work Queues

一个生产者将消息发送到队列,多个消费者接收

多个消费者监听同一个队列,则各消费者之间对同一消息是竞争关系(一个消息仅由一个消费者消费)

Work Queues工作模式适用于任务较重或任务较多的情况,多消费者分摊任务可以提高消息处理的效率

Publish/Subscribe发布订阅模式

生产者将消息发送到交换机,交换机可以绑定多个队列,广播到多个队列上,每个队列依然可以有多个消费者接收,且同一队列上的消费者对同一消息依然是竞争关系(一个队列上的一个消息仅由一个消费者消费)

生产者不是把消息直接发送到队列,而是发送到交换机。交换机接收消息,而如何处理消息取决于交换机的类型

Exchange(交换机)只负责转发消息,不具备存储消息的能力,因 此如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那 么消息会丢失!

  • Fanout:广播,将消息发送给所有绑定到交换机的队列

  • Direct:定向,把消息交给符合指定routing key的队列

  • Topic:通配符,把消息交给符合routing pattern(路由模式)的队列

生产者将消息发送到Fanout类型的交换机上,Fanout类型的交换机可以绑定多个队列,Fanout类型的交换机会将消息广播到所有绑定的队列上(交换机上绑定的多个队列都能收到消息,但是每个队列仅由一个消费者处理,因为可能有多个队列,所以实际上可能有多个消费者处理消息)

Routing路由模式

生产者将消息发送到交换机,交换机通过确定的路由绑定队列,将消息发送到指定的队列上

发送消息时指定路由键,由交换器根据路由键发送到绑定的队列上

路由模式是发布订阅模式的进一步细化,发布订阅模式绑定队列到交换机上,路由模式则对绑定到交换机上队列根据路由键进一步分组

使用路由模式需要指定交换机类型为Direct

Topics主题模式

生产者将消息发送到交换机,使用通配符匹配一个或多个路由

主题模式是在路由模式的基础上,使用通配符指定路由键

路由键一般都是由一个或多个单词组成,多个单词之间以“.”分割

通配符#匹配零个或多个词

通配符*匹配一个词

使用主题模式需要指定交换机类型为Topic

RPC

是一种同步模式,用得少

PublisherConfirms

消息可靠性投递

Last Updated:
Contributors: 吴俊城
Prev
RabbitMQ 快速启动