首页 > 其他分享 >RabbitMQ基础知识

RabbitMQ基础知识

时间:2024-11-07 13:19:55浏览次数:1  
标签:队列 RabbitMQ 基础知识 生产者 交换机 消息 控制台 路由

消息队列,原则FIFO,队列中存档的内容是message

用途:订阅发布,不同进程/线程之间通信

消息队列的产生:1. 不同进程传递消息,两个进程耦合程度过高,影响另一个进程,为了隔离两个进程,抽出一个一层,所有两个进程之间传递的消息,都必须通过消息队列来传递,单独修改某个进行,不会影响另一个;2. 某个进程接受太多消息,一下子无法处理完,收到的消息必须进行排队,因此产生了消息队列。

RabbitMQ

MQ:消息队列

Erlang:面向并发的编程语言,使用的语言Erlang,利用了 Erlang 在并发处理和容错方面的优势

AMQP:应用层协议

相关协议

  1. AMQP: AMQP 是一种开放标准的应用层协议,用于高效、可靠、安全的企业级消息传输。它定义了消息结构、消息路由规则、队列声明和交换类型等,支持多种消息模式,如发布/订阅、点对点等。RabbitMQ 是基于 AMQP 协议实现的最知名的开源消息中间件之一。
  2. MQTT: MQTT 设计用于轻量级的设备与设备、设备与服务器之间的通信,特别适合物联网(IoT)场景。它采用了发布/订阅模型,支持低带宽、高延迟或不可靠的网络。MQTT 优化了小尺寸传感器和移动设备的电池寿命,减少了网络流量。
  3. JMS: JMS 是 Java 平台上的消息服务API规范,不是一个底层传输协议,而是一套接口规范,允许应用程序创建、发送、接收和读取消息。

用户角色

1、超级管理员(administrator)
可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
2、监控者(monitoring)
可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3、策略制定者(policymaker)
可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
4、普通管理者(management)
仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
5、其他
无法登陆管理控制台,通常就是普通的生产者和消费者。

virtual hosts

设置权限之类的

几种队列

简单队列模式:

生产者将消息发送到队列,消费者从队列获取消息

img点击并拖拽以移动编辑

work模式:

一个生产者,两个消费者,一个消息只能被一个消费者获取

img点击并拖拽以移动编辑

publish发布订阅:

img点击并拖拽以移动编辑

  1. 每个消费者监听自己的队列
  2. 生产者将消息发给broker(中间件服务),由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息
Routing路由模式

img点击并拖拽以移动编辑

1.每个消费者监听自己的队列,并且设置routingkey

2.生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定的队列

routing key(路由键)是一种用于消息路由的标识符,主要作用是决定消息应该被发送到哪个队列; 该键不能随意写,必须以点号分割,如aa.bb; cc.dd.ee等格式 ; *代表一个单词,#代表0个或多个单词)

Topics统配符模式

img点击并拖拽以移动编辑

  1. 每个消费者监听自己的队列,并且设置带统配符的routingkey
  2. 生产者将消息发给broker,由交换机根据routingkey来转发消息到指定的队列

交换机的类型

direct 直连交换机

生产者发送消息,交换机根据不同的路由键,发送到对应的队列

image-20240523220611834

Fanout扇出交换机

生产者发送到交换机的消息,发送到绑定该交换机的所有队列

image-20240523220628914

Topic主题交换机

topic和direct区别:topic可以用统配符的方式,对路由键进行绑定;更灵活路由消息

生产者向该交换机的routeA.xxx.routeA路由键发送消息;那么队列1和2都会收到消息

image-20240523221640266

header交换机

不常用

标签:队列,RabbitMQ,基础知识,生产者,交换机,消息,控制台,路由
From: https://www.cnblogs.com/cimengmenga/p/18531958

相关文章

  • 用例图基础知识
    什么是用例图用例图描述了一组用例、参与者以及它们之间的关系使用阶段:软件需求分析使用者:软件分析人员、软件开发人员用例模型:把系统看成黑盒子,外部,不考虑功能怎么实现,只考虑有什么功能用例图:用来描述用户的需求,从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用......
  • Python基础知识
    在用Python写代码的之前,对Python的基础知识是必须要会的,不然你可能会寸步难行。基础知识包括输入输出、变量、数据类型、表达式、运算符这5个方面。输入输出Python有很多函数,后面我们会细讲,但这里先将两个最基本的函数:输入和输出。输出函数print(),在前面我们已经用过了,语法......
  • RabbitMQ交换机类型
    RabbitMQ交换机类型1、RabbitMQ工作模型2、RabbitMQ交换机类型2.1、FanoutExchange(扇形)2.1.1、介绍2.1.2、示例2.1.2.1、生产者2.1.2.2、消费者2.1.2.3、测试2.2、DirectExchange(直连)2.2.1、介绍2.2.2、示例2.2.2.1、生产者2.2.2.2、测试2.3、TopicExchange(主题交......
  • RabbitMQ如何保证发送的消息可靠(RabbitMQ的Confirm模式和2.Return模式)
    RabbitMQ如何保证发送的消息可靠(RabbitMQ的Confirm模式和2.Return模式)1、RabbitMQ消息Confirm模式(保证从生产者到交换机的消息可靠)1.1、Confirm模式简介1.2、具体代码实现1.2.1、application.yml开启确认模式1.2.2、生产者方式1:实现RabbitTemplate.ConfirmCallback生产......
  • SQL语法基础知识总结
    SQL(StructuredQueryLanguage)即结构化查询语言,是用于管理关系型数据库的标准语言。掌握SQL语法是操作数据库的关键,以下是SQL语法基础知识的详细总结。一、数据定义语言(DDL-DataDefinitionLanguage)1.创建数据库(CREATEDATABASE)用于创建一个新的数据库。例如,创建一......
  • Linux 基础知识总结
    简介Linux是一个开源的类Unix操作系统内核,由LinusTorvalds在1991年首次发布。如今,Linux已经发展成为一个庞大的操作系统家族,广泛应用于服务器、桌面、移动设备和嵌入式系统等多个领域。本文将为你提供一个关于Linux的基础知识总结,帮助你快速了解和掌握Linux的核心......
  • 数据库基础知识总结
    一、数据库简介数据库是按照数据结构来组织、存储和管理数据的仓库。它就像是一个精心设计的文件柜,用于存放海量的数据信息,并且能够方便地对这些数据进行操作和检索。在当今数字化的时代,数据库在各个领域都有着至关重要的作用,无论是企业的资源管理、互联网应用的数据存储,还是......
  • hive基础知识分享(一)
    写在前面今天来学习hive部分的知识。Hive相关概念Hive是什么?ApacheHive是一个基于Hadoop的数据仓库工具,旨在通过SQL类似的查询语言(称为HiveQL)来实现对存储在HDFS(HadoopDistributedFileSystem)中的大规模数据的查询、分析和管理。它为数据分析提供了一种高层次的抽......
  • 计算机组成原理基础知识(二)
    来源:https://blog.csdn.net/weixin_47180815/article/details/125496560?fromshare=blogdetail&sharetype=blogdetail&sharerId=125496560&sharerefer=PC&sharesource=rxzyyyyyy&sharefrom=from_linkn位定点小数、整数的取值范围溢出判断1、采用一位符号位2、采用双符......
  • 新能源行业必会基础知识-----电力现货市场理论篇-----电力市场概述-----电力现货市场
    新能源行业必会基础知识-----电力现货市场理论篇-----主目录-----持续更新https://blog.csdn.net/grd_java/article/details/143364261这本书是2023年出版的,是当下了解国内电力市场最好的途径了。还是推荐大家买来这本书进行阅读观看,最好作为随身携带的查阅工具书。内......