什么是RabbitMQ

先了解下RabbitMQ是否适合你的要求

  • 有没有你想要的语言接口?

基本上不是特别冷门的语言,RabbitMQ都能支持

RabbitMQ支持的语言列表

  • 是不是能接受额外的建设一台服务器-RabbitMQ Server?

Rabbit需要额外的架设一个服务器来让RabbitMQ处理你所有的自定义消息

  • 你的用途是什么?

RabbitMQ基本上是类似邮寄的概念,只要确保你有信箱,它就能确保一定把信送到你家。

RabbitMQ重要名词概念

在这里插入图片描述

主要有五大类:

  • Producer

负责将信息丢到Queue中,若有定义Exchange,则丢给Exchange决定要给谁

  • Consumer

负责接收来自Queue的消息

  • Queue

负责存放消息,具有FIFO先进先出的特性,每个Queue都会有独立的ID编号

  • Exchange

用来决定Producer给的消息要丢给哪一个Queue;

主要支持四种方式:

  1. Direct:直接丢给指定的Queue
  2. Topic:类似regular expression,设定binding规则,丢给符合的Queue
  3. Headers:透过传送资料的Header来特别指定所要的Queue
  4. fanout:一次丢给全部负责的Queue
  • Binding

和exchange搭配使用,主要告诉Exchange它负责哪些Queue

利用RabbitMQ这些特性可以做什么事情?

透过不同的组合,你可以达到不同的需求。一下为五种例子:

  • Task queues

不透过任何Exchange直接送到指定的Queue

在这里插入图片描述

  • Publish/Subscribe

透过exchange:fanout特性,达到订阅Queue的Consumer都可以接收到讯息

在这里插入图片描述

  • Routing

透过Exchange:direct特性,达到filter到不同Queue的routing消息

在这里插入图片描述

  • Topics

通过Exchange:topics特性,每个Queue都有属于自己的分类,通配符类型的路由

在这里插入图片描述

在 RabbitMQ 中,Exchange 是一个特殊类型的队列,它负责接收生产者的消息并将其路由到一个或多个队列。其中,Topic Exchange(主题交换器)是一种类型的Exchange,其特性包括:

  1. 消息路由:Topic Exchange根据消息的路由键(Routing Key)将消息路由到一个或多个队列。路由键可以使用通配符或模糊匹配来匹配。
  2. 灵活性:Topic Exchange提供了一种灵活的消息路由机制,允许将消息路由到不同的队列,以满足不同的业务需求。
  3. 可扩展性:通过使用Topic Exchange,可以将消息路由到不同的队列,从而将处理逻辑分散到不同的消费者实例或服务中,实现系统的可扩展性。
  4. 消息过滤:通过使用特定的路由键和队列的绑定规则,可以实现基于规则的消息过滤功能。例如,可以将所有来自特定用户的订单消息路由到一个特定的队列。
  5. 错误处理:如果生产者在发送消息时发生错误,消息可能会被重新放入队列中,等待其他消费者进行处理。通过使用Topic Exchange,可以确保消息被正确地路由到目标队列,以便进行错误处理和重试机制。

总之,Topic Exchange在RabbitMQ中提供了一种灵活的消息路由机制,允许将消息路由到不同的队列,以满足不同的业务需求。

  • RPC

通过AMQP所定义的properties来达成RPC的支持

在这里插入图片描述

相关推荐

  1. 什么RabbitMQ

    2024-01-23 14:30:02       50 阅读
  2. 什么RabbitMQ死信队列?如何实现?

    2024-01-23 14:30:02       56 阅读
  3. datalist 什么?以及作用什么

    2024-01-23 14:30:02       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-23 14:30:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-23 14:30:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-23 14:30:02       87 阅读
  4. Python语言-面向对象

    2024-01-23 14:30:02       96 阅读

热门阅读

  1. RabbitMQ(不完整版)

    2024-01-23 14:30:02       52 阅读
  2. vue和react的区别

    2024-01-23 14:30:02       57 阅读
  3. Zookeeper源码分析ZooKeeperServer

    2024-01-23 14:30:02       48 阅读
  4. 华纳云:web服务器和www服务器有什么区别?

    2024-01-23 14:30:02       52 阅读
  5. Unity UnityWebRequest 向php后端上传图片文件

    2024-01-23 14:30:02       58 阅读
  6. C Primer Plus(第六版)13.11 编程练习 第9题

    2024-01-23 14:30:02       59 阅读
  7. Rust 中的 Option、Result 和 ? 运算符

    2024-01-23 14:30:02       57 阅读
  8. Rust 并发

    2024-01-23 14:30:02       49 阅读
  9. 树莓派ubuntu:CSI接口摄像头安装驱动程序及测试

    2024-01-23 14:30:02       55 阅读
  10. UNITY BUILD加速cmake 编译

    2024-01-23 14:30:02       51 阅读
  11. VSCode 中 Tab 键突然不能缩进了

    2024-01-23 14:30:02       52 阅读