消息队列,原则FIFO,队列中存档的内容是message
用途:订阅发布,不同进程/线程之间通信
消息队列的产生:1. 不同进程传递消息,两个进程耦合程度过高,影响另一个进程,为了隔离两个进程,抽出一个一层,所有两个进程之间传递的消息,都必须通过消息队列来传递,单独修改某个进行,不会影响另一个;2. 某个进程接受太多消息,一下子无法处理完,收到的消息必须进行排队,因此产生了消息队列。
RabbitMQ
MQ:消息队列
Erlang:面向并发的编程语言,使用的语言Erlang,利用了 Erlang 在并发处理和容错方面的优势
AMQP:应用层协议
相关协议
- AMQP: AMQP 是一种开放标准的应用层协议,用于高效、可靠、安全的企业级消息传输。它定义了消息结构、消息路由规则、队列声明和交换类型等,支持多种消息模式,如发布/订阅、点对点等。RabbitMQ 是基于 AMQP 协议实现的最知名的开源消息中间件之一。
- MQTT: MQTT 设计用于轻量级的设备与设备、设备与服务器之间的通信,特别适合物联网(IoT)场景。它采用了发布/订阅模型,支持低带宽、高延迟或不可靠的网络。MQTT 优化了小尺寸传感器和移动设备的电池寿命,减少了网络流量。
- JMS: JMS 是 Java 平台上的消息服务API规范,不是一个底层传输协议,而是一套接口规范,允许应用程序创建、发送、接收和读取消息。
用户角色
1、超级管理员(administrator)
可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
2、监控者(monitoring)
可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3、策略制定者(policymaker)
可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
4、普通管理者(management)
仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
5、其他
无法登陆管理控制台,通常就是普通的生产者和消费者。
virtual hosts
设置权限之类的
几种队列
简单队列模式:
生产者将消息发送到队列,消费者从队列获取消息
编辑
work模式:
一个生产者,两个消费者,一个消息只能被一个消费者获取
编辑
publish发布订阅:
编辑
- 每个消费者监听自己的队列
- 生产者将消息发给broker(中间件服务),由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息
Routing路由模式
编辑
1.每个消费者监听自己的队列,并且设置routingkey
2.生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定的队列
(routing key
(路由键)是一种用于消息路由的标识符,主要作用是决定消息应该被发送到哪个队列; 该键不能随意写,必须以点号分割,如aa.bb; cc.dd.ee等格式 ; *代表一个单词,#代表0个或多个单词)
Topics统配符模式
编辑
- 每个消费者监听自己的队列,并且设置带统配符的routingkey
- 生产者将消息发给broker,由交换机根据routingkey来转发消息到指定的队列
交换机的类型
direct 直连交换机
生产者发送消息,交换机根据不同的路由键,发送到对应的队列
Fanout扇出交换机
生产者发送到交换机的消息,发送到绑定该交换机的所有队列
Topic主题交换机
topic和direct区别:topic可以用统配符的方式,对路由键进行绑定;更灵活路由消息
生产者向该交换机的routeA.xxx.routeA路由键发送消息;那么队列1和2都会收到消息
header交换机
不常用
标签:队列,RabbitMQ,基础知识,生产者,交换机,消息,控制台,路由 From: https://www.cnblogs.com/cimengmenga/p/18531958