首页 / 知识
最详细的RabbitMQ介绍
2023-04-11 13:10:00

一、RabbitMQ是什么
RabbitMQ是一个由erlang语言编写的、开源的、在AMQP基础上完整的、可复用的企业消息系统。支持多种语言,包括java、Python、ruby、PHP、C/C++等。
备注:
(1)MQ:MQ是 message queue 的简称,是应用程序和应用程序之间通信的方法。
(2)AMQP:advanced message queuing protocol ,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息并不受客户端/中间件不同产品、不同开发语言等条件的限制。
二、RabbitMQ的核心概念
生产者(Producer):发送消息的应用。
消费者(Consumer):接收消息的应用。
队列(Queue):存储消息的缓存。
消息(Message):由生产者通过RabbitMQ发送给消费者的信息。
连接(Connection):连接RabbitMQ和应用服务器的TCP连接。
通道(Channel):连接里的一个虚拟通道。当你通过消息队列发送或者接收消息时,这个操作都是通过通道进行的。
交换机(Exchange):交换机负责从生产者那里接收消息,并根据交换类型分发到对应的消息列队里。要实现消息的接收,一个队列必须到绑定一个交换机。
绑定(Binding):绑定是队列和交换机的一个关联连接。
路由键(Routing Key):路由键是供交换机查看并根据键来决定如何分发消息到列队的一个键。路由键可以说是消息的目的地址。
三、RabbitMQ五种消息发送模式
生产者(Producer)发送->中间件->消费者(Consumer)接收消息。
RabbitMQ包括五种队列模式,简单队列、工作队列、发布/订阅、路由、主题、rpc等。
1、简单队列
(1)生产者将消息发送到队列,消费者从队列获取消息。
(2)一个队列对应一个消费者。
2、工作队列
(1)一个生产者,多个消费者。
(2)一个消息发送到队列时,只能被一个消费者获取。
(3)多个消费者并行处理消息,提升消息处理速度。
注意:channel.basicQos(1)表示同一时刻只发送一条消息给消费者。
3、发布/订阅模式(Publish/Subcribe)
将消息发送到交换机,队列从交换机获取消息,队列需要绑定到交换机。
(1)一个生产者,多个消费者。
(2)每一个消费者都有自己的一个队列。
(3)生产者没有将消息直接发送到队列,而是发送到交换机。
(4)每一个队列都要绑定到交换机。
(5)生产者发送的消息,经过交换机到达队列,实现一个消息被多个消费者获取的目的。
(6)交换机类型为“fanout”。
注意:交换机本身没有存储消息的能力,消息只能存储到队列中。
4、路由模式(Routing)
路由模式是发布/订阅模式的一种特殊情况。
(1)路由模式的交换机类型为“direct”。
(2)绑定队列到交换机时指定 key,即路由键,一个队列可以指定多个路由键。
(3)生产者发送消息时指定路由键,这时,消息只会发送到绑定的key的对应队列中。
|
最新内容
相关内容
python如何判断一个数是素数
python如何判断一个数是素数,数字,代码,培训,质数,素数,方法,个数,自然数,不是,思路,python如何判断一个数是素数的方法:一个大于1的自然数,除python一个数的平方怎么表示
python一个数的平方怎么表示,培训,平方根,个数,函数,模块,表示,方法,表达式,实例,下面,用python进行数学计算,可以使用python内置的函数模块,下python判断一个数是否为int
python判断一个数是否为int,培训,基础,变量,类型,函数,个数,整数,以上,不是,方法,在python中如何判断一个数是不是整数?其实python有两种查看pythonnan是什么
pythonnan是什么,培训,系统,电脑,无穷大,个数,类型,定义,操作系统,以上,表示,NaN是浮点数的一个值,代表“不是数”,通常是除0错误python中可以python如何求一个数的平方
python如何求一个数的平方,培训,平方根,个数,整数,函数,模块,方法,小数,表达式,数值,用python进行数学计算,可以使用python内置的函数模块,下面pythonelif语句报错是什么原因
pythonelif语句报错是什么原因,培训,语句,数据,条件,程序,结果,内容,变量,使用方法,更多,python的else和elif语句也可以叫做子句,因为它们不能python如何自定义一个函数
python如何自定义一个函数,代码,名称,培训,函数,圆括号,参数,定义,表达式,选择性,字符串,python函数是组织好的,可重复使用的,用来实现单一,或相python如何判断一个数是否是素数
python如何判断一个数是否是素数,代码,数字,培训,情况,质数,素数,自然数,不是,循环体,个数,先来看下什么是python质数:质数(Primenumber),又称pythonpython是什么类型的语言
pythonpython是什么类型的语言,培训,系统,教育,软件,电脑,代码,简介,人工智能,类型,语言,python是一种面向对象、解释型、动态类型计算机程序pythonlauncher是什么
pythonlauncher是什么,系统,培训,位置,工具,版本,以上,范围内,小字,不同于,全局,什么是PythonLauncher?以下是官方文档给出的解释Newinversiopython怎么判断某一对象是否为字典
python怎么判断某一对象是否为字典,培训,名称,代码,情况,类型,实例,元素,字典,函数,对象,我们经常需要在Python代码中确定某个实例是什么类型python怎么求一个数的平方
python怎么求一个数的平方,培训,平方根,个数,函数,模块,方法,表达式,实例,下面,以上,用python进行数学计算,可以使用python内置的函数模块,下面