作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!
目录
1. 关于MQ
1.1 什么是MQ?
1.2 MQ是干什么用的?
1.3 MQ衡量标准
1.4 主流竞品分析
2. 关于RabbitMQ
2.1 RabbitMQ的优势
2.2 RabbitMQ架构
2.3 RabbitMQ各组件功能
3. 在Docker中运行RabbitMQ
👑👑👑结束语👑👑👑
分布式系统和大数据处理平台是目前业界关注的热门技术。 本篇文章将重点介绍热门的消息队列中间件RabbitMQ。 |
1. 关于MQ
1.1 什么是MQ?
消息总线(Message Queue),是一种跨进程、异步的通信机制,用于上下游传递消息。由消息系统来确保消息的可靠传递。 |
1.2 MQ是干什么用的?
应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等... |
1.3 MQ衡量标准
服务性能、数据存储、集群架构 |
1.4 主流竞品分析
当前市面上mq的产品很多,比如RabbitMQ、Kafka、ActiveMQ、ZeroMQ和阿里巴巴捐献给Apache的RocketMQ。甚至连redis这种NoSQL都支持MQ的功能。 |
2. 关于RabbitMQ
RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在不同的应用之间共享数据(跨平台跨语言)。RabbitMQ是使用Erlang语言编写,并且基于AMQP协议实现。 |
2.1 RabbitMQ的优势
|
2.2 RabbitMQ架构
2.3 RabbitMQ各组件功能
|
3. 在Docker中运行RabbitMQ
AMQP架构中有两个主要组件:Exchange和Queue,两者都在服务端,又称Broker,由RabbitMQ实现的。客户端通常有Producer和Consumer两种类型,如下图所示。 |
在使用RabbitMQ过程中需要注意的是,它将数据存储在Node中,默认情况为hostname。因此在使用docker run指令运行容器的时候,应该通过-h/--hostname参数指定每一个rabbitmq daemon运行的主机名。这样就可以轻松地管理和维护数据了: |
$ docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3 3f28f6290e05375363ee661151170d37fbc89ada004c3235f02997b711b4cb2b
用户使用rabbitmqctl工具进行远程管理,或跨容器管理的时候,会需要设置持久化的cookie。如果需要了解关于Erlang Cookie的信息,可以参见RabbitMQ官网的集群指南。 |
这里可以使用RABBITMQ_ERLANG_COOKIE参数进行设置: |
$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_ERLANG_ COOKIE='secret cookie here' rabbitmq:3
使用cookie连接至一个独立的实例: |
$ docker run -it --rm --link some-rabbit:my-rabbit -e RABBITMQ_ERLANG_COOKIE= 'secret cookie here' rabbitmq:3 bash root@f2a2d3d27c75:/# rabbitmqctl -n rabbit@my-rabbit list_users Listing users ... guest [administrator]
同样,也可以使用RABBITMQ_NODENAME简化指令: |
$ docker run -it --rm --link some-rabbit:my-rabbit -e RABBITMQ_ERLANG_COOKIE= 'secret cookie here' -e RABBITMQ_NODENAME=rabbit@my-rabbit rabbitmq:3 bash root@f2a2d3d27c75:/# rabbitmqctl list_users Listing users ... guest [administrator]
默认情况下,rabbitmq会安装并启动一些管控插件,如rabbitmq:3- management。通常可以通过默认用户名密码以及标准管控端口15672访问这些插件: |
$ docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3-management
用户可以通过浏览器访问http://container-ip:15672,如果需要从宿主机外访问,则使用8080端口: |
$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq: 3-management
如果需要修改默认用户名与密码(guest:guest),则可以使用RABBITMQ_DEFAULT_USER和RABBITMQ_DEFAULT_PASS环境变量: |
$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_ USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management
如果需要修改默认vhost,可以修改RABBITMQ_DEFAULT_VHOST环境变量: |
$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_ VHOST=my_vhost rabbitmq:3-management
然后连接至daemon: |
$ docker run --name some-app --link some-rabbit:rabbit -d application-that-uses- rabbitmq
用户也可以访问官方镜像仓库,并对Dockerfile进行更多定制。 |
👑👑👑结束语👑👑👑
猜你喜欢
- 14天前(四川率先建立“双定向”基层文化人才职称评审通道机制)四川率先建立“双定向”基层文化人才职称评审通道机制
- 14天前(上海文旅产业发展高峰论坛)《上海打造文旅元宇宙新赛道行动方案》发布
- 14天前(瑞虎7plus2021款)重塑10万级SUV价值标杆,全新一代瑞虎7PLUS冠军版给你惊喜
- 14天前(花王伴你乐享五一好“趣”处)花王伴你乐享五一好“趣”处
- 14天前(新西兰“空降”上海:新西兰旅游局邀请你来“玩真的”!)新西兰“空降”上海:新西兰旅游局邀请你来“玩真的”!
- 14天前(内蒙古交通旅游图)内蒙古着力提升交通与旅游服务水平
- 14天前(殷建祥简历)全国十大牛商解码:殷建祥如何用178天技术突围打造星空梦星空房
- 14天前(阿斯塔纳航空属于哪个联盟)阿斯塔纳航空荣获Skytrax世界航空公司大奖,将继续助力中哈交流往来
- 14天前(北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- 14天前(海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章