消息队列是指利用队列这种数据结构进行消息发送、缓存、接收,使得进程间能相互通信,是点对点的通信
而消息代理是对消息队列的扩展,支持对消息的路由,是发布-订阅模式的通信,消息的发送者并不清楚消息的接收者,消息可以被多个消费者接收。
(资料图)
使用消息队列的作用如下
异步:
对于一些用户的请求,可能包含一些发送短信,发送邮件等系统处理,此时可以不需要等待短息发送完成或者邮件发送完成,而是通过消息队列通知这些模块即可返回,避免用户长时间等待
解耦:
将数据发送到消息队列,对该数据感兴趣的系统自行订阅该消息即可,这种做法可以降低代码的耦合度。
消峰填谷:
将瞬时高并发请求打到消息队队列上,作为数据库请求的缓冲,避免短时间大量的数据库请求导致数据库奔溃。
RabbitMQ是一种开源的多协议消息代理软件,它将消息发布者(发布消息的应用程序,也称为生产者)接收消息并将它们路由到消费者(处理消息的应用程序)。
RabbitMQ支持多种消息传递协议,其中AMQP 0-9-1是核心,并以插件的形式支持STOM,MQTT,AMQP 1.0。
AMQP,即Advanced Message Queuing Protocol,中文名称是高级消息传递协议。
AMQP 0-9-1 模型如下图所示
消息生产者producer和消费者consumer均通过TCP连接消息代理broker,生产者producer将消息投递到交换机exchange,消息代理根据消息队列queue和交换机exchange的绑定关系bind将消息推送到对应的消息队列queue,最后消费者consumer消费感兴趣消息队列中的数据。
2.1 RabbitMQ中的相关概念Producer:
消息生产者
Consumer:
消息消费者
Broker:
消息代理,这里指即RabbitMQ,通过消息代理可以将消息从生产者投递到消费者
Virtual host:
虚拟主机,使单个消息代理能提供了多个相对隔离的环境,隔离的资源包括交换机、队列等
Exchange:
交换机,作用相当于现实生活的快递公司,生产者的消息实际时先投递到交换机,交换机再根据类型和绑定关系拷贝消息副本到指定队列,交换机的类型有direct,topic,headersandfanout
Queue:
队列,先进先出的优先级队列,充当了一个缓冲区的角色,作用相当于现实生活中的菜鸟驿站等代收点
Binding:
交换机和队列的绑定关系,交换机投递消息到指定队列的规则,作用相当于现实生活中寄快递时填写的地址
Connection:
消息生产者和消费者通过TCP连接到虚拟主机,确保数据传输到可靠性
Channel:
共享单个TCP连接的轻量级的Connection,不同Channel通过Channel ID隔离开,互不影响,通常一个进程可以只建立一个TCP连接,减少TCP的资源开销
可靠性(Reliablity):
使用TCP连接进行数据传输、且提供了消息持久化、队列持久化、生产者发送确认、消费者消费确认等机制保证消息的可靠
灵活的路由(Flexible Routing):
提供了多种类型的交换机Exchange
消息集群(Clustering):
多个RabbitMQ服务器可以组成一个集群,形成一个逻辑消息代理Broker
高可用(Highly Avaliable Queues):
队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用
多种协议(Multi-protocol):
支持多种消息队列协议,核心是AMQP,通过插件形式支持STOMP、MQTT等
多种语言客户端(Many Clients):
几乎支持所有常用语言,比如Java、Python、Golang等
管理界面(Management UI):
提供了易用的用户界面,使得用户可以监控和管理消息Broker的许多方面
跟踪机制(Tracing):
如果消息异常,RabbitMQ提供了消息的跟踪机制,使用者可以找出发生了什么
插件机制(Plugin System):
提供了许多插件,来从多方面进行扩展,也可以编辑自己的插件
参考Install Docker Desktop on Mac安装docker,安装完成后点击Docker图标以启动Docker服务
这里简单介绍几个常用的docker命令
docker ps -a
可以看到Docker启动过的容器
$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8918b9e8bae2 rabbitmq:3-management "docker-entrypoint.s…" 2 days ago Up 2 days 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp some-rabbit
docker stop CONTAINER ID
停止运行中的容器
$ docker stop 8918b9e8bae28918b9e8bae2
docker restart CONTAINER ID
重启容器
$ docker restart 8918b9e8bae28918b9e8bae2
docker exec -it CONTAINER ID /bin/bash
可以进入运行容器的终端
$ docker exec -it 8918b9e8bae2 /bin/bashroot@my-rabbit:/#
3.2 RabbitMQ安装及启动打开终端,在终端中输入
docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management
通过http://localhost:15672
可以访问管理后台,默认账号和密码均是guest
5672
是AMQP 0-9-1
使用的端口
管理后台提供了监控和管理RabbitMQ节点和集群的能力。
管理后台如下图所示
通过该管理后台,可以查看当前活跃的Connection, Channel, Exchange, Queue等信息,从图片可以看出当前活跃的Exchange共有7个,具体的类型覆盖了direct,topic,headersandfanout四种。
通过这个管理后台也可以创建或者删除Connection, Channel, Exchange, Queue
标签:
1 消息队列消息队列是指利用队列这种数据结构进行消息发送、缓存、接收,使得进程间能相互通信,是点对点的
共同社24日获悉,一名在瑞士钟表巨头“斯沃琪集团”日本公司工作的五十多岁女性管理层员工因屡遭派驻日...
格隆汇5月24日丨金房节能(001210 SZ)公布,公司与中能建地热有限公司于近日签署了《战略合作框架协议书》。
企业区域间迁移,或因产业资源,或因区域政策,亦或是生产成本驱使,无论哪种因素,企业迁移对于全国经济发
毫不夸张地说,这笔交易开拓者付出的代价非常大,芬尼西蒙斯是他们培养多年的新星,个人实力非常出色,本赛
精工科技(002006)精工科技发布年报及一季报:2022年,公司营业收入23 57亿元,同比增长36 37%;归母 扣非净
《浪姐4》三公结果出炉,吴优李莎旻子被曝淘汰,复活赛看点弱,复活赛,汪小敏,李彩桦,刘惜君,徐怀钰,浪姐4,
1、还不是因为情的原因,好晕看都。2、不想说了都。本文就为大家分享到这里,希望小伙伴们会喜欢。
答:退休金和养老金不是一回事退休金是指并没有缴纳养老保险的退休职工到了退休年纪,国家财政或者是地方财
天佑德酒近日在业绩说明会上表示,公司对于年份原酒制定了储存规划,年份原酒在逐年增加,目前公司整体原酒
近日,哈高新区江南园区召开安全生产工作会议,向企业传达省、市、区安全生产会议精神,并对检查工作进行了
本场比赛后,凯尔特人也将系列赛的总比分扳成了1比3,看起来这轮系列赛并不会像大家想象中那样很快结束。霍
外观方面vivoX21突破性的采用了四曲面3D玻璃,四边都有视觉落差感,给人带来十足的新鲜感。外观色彩通过玻
考一级建造师在哪里报名2023由一级建造师考试栏目提供,查找更多考试报名资讯、准考证打印、成绩查询或考一
证券时报网讯,教育部今天发布通知,今年将继续实施农村订单定向医学生免费培养,要求各地做好2023年中央财
中国报告大厅2023年5月24日甲酸钙价格最新走势监测显示:山东齐沣和润生物科技有限公司报价机构,今日甲酸
5月24日举行的SNEC2023光伏大会上,隆基绿能(601012)宣布,近日经德国弗劳恩霍夫太阳能系统研究所(Fraunhof
大风蓝色预警信号:预计24日10时到25日8时,连山区及渤海北部海域西南风5到6级,阵风7到9级,请注意防范大
据报道,微软周二开始向用户提供大批人工智能升级,包括对ChatGPT、搜索引擎必应以及云计算服务的升级,希
5月23日,我市统一开放锡东生活垃圾焚烧发电厂等7处垃圾分类宣传教育基地,各地居民和学生走进基地,通过体
X 关闭
X 关闭