美文网首页
RabbitMq基本概念

RabbitMq基本概念

作者: Donald_32e5 | 来源:发表于2019-04-19 17:05 被阅读0次

一、概述

RabbitMQ是一个消息代理 - 一个消息系统的媒介。它可以为你的应用提供一个通用的消息发送和接收平台,并且保证消息在传输过程中的安全。

RabbitMQ消息模型的核心理念是:发布者(producer)不会直接发送任何消息给队列。事实上,发布者(producer)甚至不知道消息是否已经被投递到队列。

二、核心组件

  • 1、Producing(生产者)
  • 2、Exchange(交换机)
  • 3、Routing(路由器)
  • 4、Queue(队列)
  • 5、Consuming(消费者)

三、组件详情

  • 1、Producing(生产者)
    • 生产(Producing)的意思就是发送。发送消息的程序就是一个生产者(producer)。

  • 2、Exchange(交换机)
    • 交换机非常简单,它一边从发布者方接收消息,一边把消息推送到队列。交换机必须知道如何处理它接收到的消息,是应该推送到指定的队列还是是多个队列,或者是直接忽略消息。这些规则是通过交换机类型(exchange type)来定义的。

  • 3、Routing(路由器)
    • routing_key 是exchange和queue绑定(binding)时的一个额外参数,目的是防止避免于basic_publish的参数混淆

  • 4、Queue(队列)
    • 实质上队列(queue)就是个巨大的消息缓冲区,它的大小只受主机内存和硬盘限制。多个生产者(producers)可以把消息发送给同一个队列,同样,多个消费者(consumers)也能够从同一个队列(queue)中获取数据。

  • 5、Consuming(消费者)
    • 消费(Consuming)和接收(receiving)是同一个意思。一个消费者(consumer)就是一个等待获取消息的程序。

四、Exchange类型

交换机在rabbitmq中有多种类型,对应类型所擅长的领域也不一样

1、直连交换机(Direct exchange)


  • 直连交换机在链接队列的基础上,会再加上一个routing_key,生产者在发送消息的时候,必须带上一个routing_key,交换机在分发消息的时候,会根据routing_key 来匹配指定的队列

2、扇型交换机(fanout exchange)


  • 扇形交换机是追基本的交换机类型,他能做的事情也比较简单,把接受的消息,发送给所有与它绑定的队列,多使用与广播。多人游戏资源更新广播。因为它不用做匹配扥该操作,速度是最快的

3、主题交换机(Topic exchange)


  • 在实际应用中,如果要把一条消息发送到指定的队列,使用直连交换机也可以完成,但是随着业务增加,对应的队列也会增加,维护起来就很麻烦

  • 这时候就需要用到主题交换机了,这也是应用最广的一个交换机。它要求通过消息通过特定的规则,交换机通过这些规则来映射到指定的队列上

  • 在定义主题交换机的exchange和routing_key,会遵守通用的一些的规则:
    (1)它的路由键通常有.分隔开的单词,可以是任意单词,最好是能描述消息的单词
    (2)*用来表示一个单词
    (3)#用来表示任意单词

  • 示例:
    上图的例子已经很好的说明了他们之间的绑定关系,在举一个key更长的例子

(1)创建三个绑定,Q1的绑定键:*.white.*, Q2的绑定键:*.*.rabbit,Q3的绑定键:fast.#

(2)这三个绑定可以总结为:
* Q1对所有白色动物感兴趣
* Q2只对兔子感兴趣
* Q3对所有跑的贼快的动物感兴趣

(3)一个携带有fast.white.rabbit的信息会发送到三个队列中、一个携带有lazy.white.rabbit的消息,因为不满足Q3的条件,不会发送到Q3队列、一携带有lazy.orange.tiger的消息,因为不满足任何一个队列的规则,消息不会被发到任何一个队列,并且会把这条数据丢掉。

(4)当一个队列的绑定键为#时,这个队列无视消息的路由,接受所有的消息

(5)当*#都未出现在绑定键中的时候,此时的主题交换机和直连交换机是样的解析行为

相关文章

  • RabbitMQ基本概念 --- 2022-04-03

    下面介绍RabbitMQ基本概念 RabbitMQ概念示意图 概念解释 Message 消息,包含消息头(即附属的...

  • RabbitMQ 消息队列

    RabbitMQ 的基本概念 RabbitMQ 是一种消息队列,用于程序间的通信。形象地说 : MQ就像一个邮局,...

  • SpringBoot整合RabbitMQ1(Direct Exc

    一. 一些基本概念 消息队列 面试官问你什么是消息队列?把这篇甩给他! RabbitMQ RabbitMQ-简书柯...

  • SpringBoot整合RabbitMQ1(Topic Exch

    一. 一些基本概念 消息队列 面试官问你什么是消息队列?把这篇甩给他! RabbitMQ RabbitMQ-简书柯...

  • RabbitMQ 快速入门

    前面我们介绍了RabbitMQ的基本概念,RabbitMQ基础概念详细介绍。在这里我们做一个简单的例子进行快速入门...

  • RabbitMQ基本概念

    一、简史 Message Queue的需求由来已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司...

  • RabbitMq基本概念

    一、概述 RabbitMQ是一个消息代理 - 一个消息系统的媒介。它可以为你的应用提供一个通用的消息发送和接收平台...

  • rabbitmq基本概念

    基本概念 channel:消息通道exchage:消息路由规则,四种模式(topic、direct、fanout、...

  • rabbitmq 基本概念

    一.产生背景 RabbitMQ,开源消息代理之一,采用AMQP(Advanced Message Queuing ...

  • RabbitMQ 参数属性

    RabbitMQ rabbit message queue的基本概念 producer:消息生产者,就是投递消息的...

网友评论

      本文标题:RabbitMq基本概念

      本文链接:https://www.haomeiwen.com/subject/ghcqgqtx.html