RabbitMQ基本概念

RabbitMQ是一种基于AMQP(Advanced Message Queuing Protocol)的消息总线开源实现,下面讲述一下其基本概念:

消息通信包括生产者、消费者、代理。生产者创建消息,并发布到代理服务器(RabbitMQ),消费者连接到代理服务器上并绑定订阅队列,接收代理服务器发来的消息。

信道:建立在“真实”TCP连接内的虚拟连接,在一条TCP连接上创建多少条信道没有限制,并且信道之间互不干扰,不仅确保私密性,并且有效节省了创建、销毁TCP连接的系统开销。

队列:是消息通信的基础模块,为消息提供处所,消息在此等待消费,是Rabbit中消息的最后终点。

路由键(routing key):想把消息投递到队列,通过把消息发送给交换器完成。根据确定的规则,RabbitMQ将会决定消息该投递到哪个队列,这些规则被称作路由键。

交换器和绑定:可以理解成具有路由表的路由程序。队列通过路由键绑定到交换器,消息发送到代理服务器时,消息将拥有路由键-可以为空-RabbitMQ会将其和队列进行路由键匹配,相匹配则投递到该队列。

vhost:虚拟消息服务器,称之为虚拟主机。vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器和绑定,最重要的是拥有自己的权限机制。

交换器共有四种类型:

direct:路由键匹配,消息就被投递到对应队列。服务器会实现一个包含空白名称的direct默认交换器。当声明队列时,会自动绑定到默认交换器,并以队列名称作为路由键。

fanout:将收到的消息广播到绑定的队列上。

topic:使来自不同源头的消息能够到达同一个队列。单个“.”把路由键分为了几部分,“*”匹配特定位置的任意文本,“#”匹配所有规则。

headers:不实用,实际应用很少。

时间: 2024-08-08 20:31:34

RabbitMQ基本概念的相关文章

RabbitMQ基本概念和使用

RabbitMQ是一个消息代理,核心原理:发送消息,接收消息. RabbitMQ主要用于组件之间的解耦,消息发送者无需知道消息使用者的存在,反之亦然.   单向解耦                                        双向解耦(如:RPC) 例如一个日志系统,很容易使用RabbitMQ简化工作量,一个Consumer进行消息的正常处理,另一个Consumer复制对消息进行日志记录,只要在程序中指定两个Consumer所监听的queue以相同的方式绑定到同一个exchan

RabbitMQ 核心概念及与 Spring Boot 2 的整合

RabbitMQ 简介 RabbitMQ 是什么 RabbitMQ 是一个用 Erlang 编写的开源的消息队列中间件,它实现了 AMQP 协议(其实还实现了 MTQQ 等消息协议).和其他两个主流的消息队列中间件 Kafka 和 RocketMQ 相比,拥有更低的延迟.更高的稳定性.更完备的功能.更完善的文档支持以及较活跃的开源社区支持,但是在吞吐量上和分布式扩展能力上逊色一些. AMQP 是什么 AMQP(Advanced Message Queuing Protocol),高级消息队列协议

RabbitMQ基础概念详细介绍

你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题. 消息服务擅长于解决多系统.异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC).本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一. RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议

rabbitmq - 基本概念

1. RabbitMQ主要有下面的概念组成: producer, channel, exchange, queue, consumer, 2. producer, 消息的发布方. 本身不是RabbitMQ的一部分而是RabbitMQ的客户端. 3. channel, channel也可以认为是connection. producer通过channel和RabbitMQ连接在一起. producer通过channel来指定其期望使用的exchange和queue. 4. exchange, 负责消

rabbitmq 基础概念介绍

[引言] 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题. 消息服务擅长于解决多系统.异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC).本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一. [RabbitMQ简介] AMQP,即Advanced Message Queuing Protocol,高级消息队列协议

RabbitMQ 基础概念

Broker:消息协商器.消息队列的实体,它在TCP/IP等端口上监听AMQ消息 vHost:虚拟主机.功能上类似于web的虚拟主机,都是把数据按照功能或项目的不同划分为不同的虚拟主机:用户只被授予访问虚拟主机的权限,而没有其他比这高级的访问控制措施.客户端与Broker沟通需要先建立连接,这些连接仅限于连接用户和虚拟主机. channel:通道.客户端在连接中声明一个通道,这个通道是客户与Broker之间的一个逻辑连接:客户端的操作都是通过通道来实现的.具体的操作需要客户端声明相应的组件. 常

RabbitMQ基础概念

消息的确认 RabbitMQ需要对每一条发送的消息进行确认.消费者必须通过AMQP的basic.ack命令显式地向RabbitMQ发送一个确认,或者在订阅到队列的时候就将auto_ack参数设置为true.当auto_ack为true时,一旦消费者接收消息,RabbitMQ会自动视其确认了消息.需要注意的是消费者对消息的确认和告诉生产者消息已经被接收了这两件事毫不相关.以此,消费者通过确认命令告诉RabbitMQ它已经确认地接收到消息,同时RabbitMQ才能安全的把消息从队列中删除. 如果消费

RabbitMQ基础概念详解(一)——环境配置及模拟生产者和消费者简单消息发送

一.简介: RabbitMq 是实现了高级消息队列协议(AMQP)的开源消息代理中间件.消息队列是一种应用程序对应用程序的通行方式,应用程序通过写消息,将消息传递于队列,由另一应用程序读取 完成通信.而作为中间件的 RabbitMq 无疑是目前最流行的消息队列之一. AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然.

RabbitMQ 概念

RabbitMQ快速概念入门 ??转(http://blog.csdn.net/qq_16414307/article/details/50585630) 本文适有一定消息队列基础的,但没有接触过RabbitMQ的快速理解RabbitMQ. 如果从来没接触过RabbitMQ,那么让我们来设想一个基础的消息队列是怎样的呢? //发送方,给一个队列名,就可以将消息发出发送(QueueName,msg) //接收方,给一个队列名就可以收到消息while(true)msg=接收(QueueName) 当