Linux中Docker安装RabbitMQ

1. RabbitMQ介绍

RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。 

 2. MQ介绍 

MQ是一个互联网架构中常见的解耦利器。
什么时候不使用MQ?
上游实时关注执行结果
什么时候使用MQ?
1)数据驱动的任务依赖,多个任务需要轮流执行,轮流订阅上一个任务。
2)上游不关心多下游执行结果,上游执行完发送到MQ,多下游订阅MQ。
3)异步返回执行时间长

1、死信队列多了一个过期的机制,到期会自动去尝试消费,通过死信交换机做匹配,选择想要的消费失败的消息。
消息中间件是在消息传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递。
特点:
1异步处理模式
2多个应用程序调用关系为松耦合关系
传递模型:
1、点多点模型PTP
每个消息只用一个消费者
发送者和接收者没有时间依赖
接受者确认消息接受和处理成功
2、发布-订阅模型Pub/Sub
一对多关系,通过订阅主题,发布者建立一个订阅,订阅者保持持续的活动状态以接收消息。
每个消息可以有多个订阅者
客户端只有订阅后才能接收到消息,有时间依赖。
持久订阅 订阅关系建立后,消息不会消失,不管订阅者是否都在线
非持久订阅 订阅者为了接受消息,必须一直在线

3、安装步骤:

1.使用docker查询rabbitmq的镜像

docker search rabbitmq 

2.安装镜像 

安装name为rabbitmq的这里是直接安装最新的,如果需要安装其他版本在rabbitmq后面跟上版本号即可

docker pull rabbitmq

3.运行mq 

需要注意的是-p 5672:5672 解释:-p 外网端口:docker的内部端口 ,你们可以改成自己的外网端口号,我这里映射的外网端口是5673那么程序连接端口就是用5672

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v /mq/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq


#如果上面的方式不行,可以尝试网络使用host
docker run -d --name rabbitmq --net=host --restart=always -p 5672:5672 -p 15672:15672 -v /mq/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq


d 后台运行容器;
–name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
–hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)

4. 启动网页查看web控制面板

通过docker ps -a 查看部署的mq容器id,在通过 docker exec -it 容器id /bin/bssh 进入容器内部在
运行:rabbitmq-plugins enable rabbitmq_management (启动网页查看web控制面板)

5. 可以使用浏览器打开web管理端:http://Server-IP:15672 

6. rabbitmq发送消息以后overview种没有图标,这个时候处理方法:

1. 进入容器内部

`docker exec -it 容器名字 /bin/bash`

进如容器后进到该目录下 `cd /etc/rabbitmq/conf.d/`

2. 执行命令

#修改 management_agent.disable_metrics_collector = false

echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf

3. 退出容器 `exit`

4. 重启容器 docker restart 容器名字或者Id

猜你喜欢

转载自blog.csdn.net/feritylamb/article/details/128434465
今日推荐