【RabbitMQ】核心概念 - Go语言中文社区

【RabbitMQ】核心概念


让我们从RabbitMQ官网的一段话开始:

RabbitMQ is the most widely deployed open source message broker.

简言之,RabbitMQ是开源的消息队列。将A君的消息,发送给B君,不过这里的B君,不单指某一个具体的实例,可能是一群实例

这篇文章来讲一讲RabbitMQ的几个核心概念

  • Producer
  • Message
  • Exchange
  • Queue
  • Consumer

概述

我们先看看几个核心概念的关系,如下图:
这里写图片描述

从上图中可以看到:

  • Producer将消息发送到Exchange
  • Exchange根据Binding关系,将消息送到0~n个Queue
  • Consumer从Queue中得到消息

下面详细讲解每个概念

Producer

首先来看看Producer(生产者),顾名思义,生产消息的实例。需要注意的是:在代码实现上,并没有Producer和Consumer抽象概念。Producer是指调用RabbitMQ API发送消息的实例,Consumer是指调用RabbitMQ API接收消息的实例,仅仅是为了方便描述,或者可以说成,仅仅是逻辑上的概念

Producer、Message、Exchange三者之间的关系如下图
这里写图片描述

即:

  • 一个Producer可以向不同的Exchange发送消息
  • 一个Producer可以向任何一个Exchange发送多条消息

Message

其次要讲的是Message,Message Broker当然离不开Message,没了Message,那就不是Message Broker了,只能是其他的什么Broker。Message有多种格式,比如:

  • text/plain
  • application/json
  • ……

Exchange

Exchange就是一个交易所,会有很多的Message进入到Exchange中,Exchange根据Binding key(或者叫Routing key)将Message分发到不同的Queue中

RabbitMQ中的Exchange有多种类型,类型不同,Message的分发机制不同,如下:

  • fanout,广播模式。这种类型的Exchange会将Message分发到绑定到该Exchange的所有Queue
  • direct,这种类型的Exchange会根据Routing key(精确匹配)将Message分发到指定的Queue
  • topic,这种类型的Exchange会根据Routing key(模糊匹配)将Message分发到指定的Queue

fanout

这里写图片描述

direct

这里写图片描述

topic

这里写图片描述

Queue

Queue,队列,消息暂时存放的地方

Consumer

Consumer,消费者,接收消息的实例

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/cug_heshun2013/article/details/80877022
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-26 23:06:31
  • 阅读 ( 958 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢