rabbitmq---基本概念

nijunyang nijunyang     2022-12-14     457

关键词:

一、安装RabbitMQ

安装直接用docker安装,如果手动安装的话比较繁琐,还要安装erlang语言的环境。在安装有docker机器上执行官网提供的指令(https://www.rabbitmq.com/download.html):docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

技术图片

 

 安装好之后 浏览器访问15672端口,可以看到web管理端。默认的是用户名密码都是guest

技术图片

 二、AMQP协议(Advanced message queue protocol 高级消息队列协议)核心概念和RabbitMQ整体架构

RabbitMQ是通过Erlang语言基于AMQP协议开发的。erlang语言常用于交换机上,因为它的高效,自然rabbitMQ也很高效了。

AMQP模型描述了一套模块化的组件以及这些组件之间进行连接的标准规则,核心概念:
server:服务,又称broker,接受客户端连接,对外提供amqp实体服务

connection:连接,客户端与server的连接

channel:网络通道,几乎所有的操作都是在channel中进行的,是进行消息对象的通道,客户端可以建立多个通道,每一个channel表示一个会话任务

virtual host:虚拟主机,是一个逻辑上的概念,一个虚拟主机中可以包含多个exhange 和 message queue但是一个虚拟主机中不能有名称相同的exchange 和 message queue
 
exchange:接收发布应用程序发送的消息,并根据一定的规则将这些消息路由到消息队列
 
message queue:消息队列,存储消息,直到这些消息被消费者安全处理完为止
 
binding:定义了exchange和message queue之间的关联,提供路由规则,包含route_key
 
route_key:路由key ,作用是在交换机上通过route_key来把消息路由到某个队列上
 
RabbitMQ整体架构:
 
技术图片

 

这些概念在rabbitMQ的web控制台都可以看见:

技术图片

 

 

 

 

三、交换机详解
1.交换机属性:
name:交换机名字
type:类型:direct,topic,fanout,headers
durability:是否需要持久化
autodelete: 假如没有队列绑定到该交换机,那么该交换机会自动删除
Internal: 当前交换机是否用户rabbitmq内部使用不常用,默认为false
argurements: 扩展参数,用户扩展AMQP定制化协议
 
2.直连交换机:direct exchange  消息投递时的key与队列绑定routekey完全相同的队列上面
 
3.主题交换机:topic exchange 投递消息是可以进行key的匹配,#匹配多个单词,*匹配一个单词(用.隔开),比如队列A绑定的routekey:study.#。投递消息时设置的routekey.abc或者routekey.abc.def都可以投递到队列A上面;队列B设置的routekey:study.*,那么就只有routekey.abc可以投递到队列B
 
4.扇形交换机: fanout exchange 不会进行routekey的匹配,只要是该交换机的队列都会被投递。因为不会进行路由字符串的匹配,所以这种交换的消息投递是最快的
 
5.头部交换机:headers exchange  投递的消息头里面有一个特殊的key:“x-match”,有两个值:all(默认),发送消息的header里面的所有key都对应,才投递;any,任意一个对应就投递
 
 
 

rabbitmq基本概念

RabbitMQ是一种基于AMQP(AdvancedMessageQueuingProtocol)的消息总线开源实现,下面讲述一下其基本概念:消息通信包括生产者、消费者、代理。生产者创建消息,并发布到代理服务器(RabbitMQ),消费者连接到代理服务器上并绑定订阅队列,... 查看详情

rabbitmq第一课rabbitmq基本概念

  初识RabbitMQRabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。 哪些大厂在用RabbitMQ,为什么?1.滴滴、美... 查看详情

(转)rabbitmq消息队列-rabbitmq消息队列架构与基本概念

...么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念。RabbitMQ架构说是架构其实更像是应用场景下的架构(自己画的有点丑,勿嫌弃)从图中可以看出RabbitMQ主要由Exchange和Queue两部分组成,然后通过RoutingKey 查看详情

rabbitmq消息队列基本概念(代码片段)

从图中可以看出RabbitMQ主要由Exchange和Queue两部分组成,然后通过RoutingKey关联起来,消息投递到Exchange然后通过Queue接收。RabbitMQ消息队列基本概念RabbitMQServer:也叫brokerserver,它是一种传输服务。他的角色就是维护一条从Producer到C... 查看详情

rabbitmq基础教程之基本概念(代码片段)

RabbitMq基础教程之基本概念RabbitMQ是一个消息队列,和Kafka以及阿里的ActiveMQ从属性来讲,干的都是一回事。消息队列的主要目的实现消息的生产者和消费者之间的解耦,支持多应用之间的异步协调工作由于工作原因,接触和使用r... 查看详情

rabbitmq基本概念

 RabbitMQ整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。可以把消息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ就好比由邮局、邮箱和邮... 查看详情

rabbitmq系列-基本概念理解

1.简介RabbitMQ是一个由erlang开发的AMQP(AdvancedMessageQueueprotocol)的开源实现。AMQP高级消息队列,说白了就是一个开源的消息中间件。它能解决不同组件、模块、系统间消息通信。2.系统架构RabbitMQServer:也叫brokerserver,存储消息的... 查看详情

rabbitmq基本概念和linux安装配置rabbitmq(代码片段)

@[toc]RabbitMQRabbitMQ是由erlang语言开发,基于AMQP(AdvancedMessageQueue高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。RabbitMQ官方地址:http://www.rabbitmq.com/Rabbit... 查看详情

rabbitmq基本概念

...IM:1、只能一对一广播2、生产者和消费者知道对方是谁RabbitMQ:只是消息代理我们不生产消息,我们只是消息的搬运工每条消息只会发送给一个订阅者(一个萝卜一个坑)消息的传递过程:生产者==>MQ==>消费者消息有效载荷... 查看详情

消息中间件系列二:rabbitmq入门(基本概念rabbitmq的安装和运行)

一、基本概念1. AMQP AMQP,即AdvancedMessageQueuingProtocol,一个提供统一消息服务的应用层标准高级消息队列协议。支持不同语言和不同的产品2.生产者消息的创建者,发送到AMQP的消息中间件3.消费者连接到AMQP的消息中间件,订... 查看详情

rabbitmq基本理论

本节内容一 RabbitMQ介绍二 RabbitMQ安装配置三 RabbitMQ的Python实现-pika  1.生产者消费者  2.工作队列   3.持久化和公平分发  4.发布与订阅  5.RPC附:概念汇总 一 RabbitMQ介绍  1. RabbitMQ使用... 查看详情

rabbitmq使用介绍及实例

消息列队不做过多解释了,直接讲讲rabbitmq的基本概念和路由模式。一、安装及基本概念rabbitmq是基于erlang编写的,所以安装rabbitmq之前需要安装erlang的环境,配置环境变量,百度即可。connectionFactory、connection、channel不做过多介... 查看详情

rabbitmq使用介绍及实例

消息列队不做过多解释了,直接讲讲rabbitmq的基本概念和路由模式。一、安装及基本概念rabbitmq是基于erlang编写的,所以安装rabbitmq之前需要安装erlang的环境,配置环境变量,百度即可。connectionFactory、connection、channel不做过多介... 查看详情

rabbitmq基本原理初识

一、背景简介  RabbitMQ是一个由erlang开发的AMQP(AdvancedMessageQueue)的开源实现。AMQP的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如COBAR的IIOP,或者是SOAP等),但是在异步消息处理... 查看详情

rabbitmq的基本介绍

  RabbitMQ官网教程:http://www.rabbitmq.com/getstarted.html  RabbitMQ是一个由Erlang语言开发的AMQP的开源实现。AMQP:AdvancedMessageQueue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户... 查看详情

rabbitmq学习总结-基础概念

...同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。  AMQP协议中的基本概念:  Broker:接收和分发消息的应用,我们在介绍消息中间件的时候所说的消息系统就是MessageBroker。  Virtualhost(虚拟地址): ... 查看详情

linux笔记-inode基本概念

背景:今天去起某个服务器的Rabbitmq,提示could_not_write_file,问了相关人员也不知道咋解决。学习了下Linux文件系统,发现里面有个inode概念,df-h发现磁盘都是空的,df-ih发现rabbitmq的挂载的节点满了。因此... 查看详情

springamqp整合rabbitmq-五种工作模式demo

文章目录一.MQ基本概念二.RabbitMQ三.Docker部署RabbitMQ四.SpringAMQP五.RabbitMQ工作模式1.BasicQueue简单模式2.Workqueues工作队列模式3.Pub/Sub订阅模式4.Routing路由模式5.Topics通配符模式六.消息转换器一.MQ基本概念1.概述MQ全称MessageQueue(消... 查看详情