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 5673:5672
解释:-p 外网端口:docker的内部端口 ,你们可以改成自己的外网端口号,我这里映射的外网端口是5673那么程序连接端口就是用5673
#docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq
通过
docker ps -a?
查看部署的mq容器id,在通过docker exec -it 容器id /bin/bssh
进入容器内部在
运行:rabbitmq-plugins enable rabbitmq_management
说明: 有些用
docker exec -it 容器id /bin/bssh
执行这个命令会报如下错:
那你可以把脚本类型 /bin/bash,尝试换为 /bin/sh试一下