前言
消息Broker,目前常见的实现方案就是消息队列(MessageQueue),简称为MQ.
目比较常见的MQ实现:
-
ActiveMQ
-
RabbitMQ
-
RocketMQ
-
Kafka
几种常见MQ的对比:
RabbitMQ | ActiveMQ | RocketMQ | Kafka | |
公司/社区 | Rabbit | Apache | 阿里 | Apache |
开发语言 | Erlang | Java | Java | Scala&Java |
协议支持 | AMQP,XMPP,SMTP,STOMP | OpenWire,STOMP,REST,XMPP,AMQP | 自定义协议 | 自定义协议 |
可用性 | 高 | 一般 | 高 | 高 |
单机吞吐量 | 一般 | 差 | 高 | 非常高 |
消息延迟 | 微秒级 | 毫秒级 | 毫秒级 | 毫秒以内 |
消息可靠性 | 高 | 一般 | 高 | 一般 |
- 追求可用性:Kafka、 RocketMQ 、RabbitMQ
- 追求可靠性:RabbitMQ、RocketMQ
- 追求吞吐能力:RocketMQ、Kafka
- 追求消息低延迟:RabbitMQ、Kafka
据统计,目前国内消息队列使用最多的还是RabbitMQ
RabbitMQ的安装
docker run \
-e RABBITMQ_DEFAULT_USER=admin\
-e RABBITMQ_DEFAULT_PASS=123 \
-v mq-plugins:/plugins \
--name mq \
--hostname mq \
-p 15672:15672 \
-p 5672:5672 \
--network hm-net\
-d \
rabbitmq:3.8-management
- -e RABBITMQ_DEFAULT_USER=admin\ 指定登录用户名
- -e RABBITMQ_DEFAULT_PASS=123 \ 指定登录密码
- -v mq-plugins:/plugins \ 挂载数据卷,以后要用到的插件可以放在挂载的目录
- --name mq \
- --hostname mq \
- -p 15672:15672 \ 图形化界面访问端口
- -p 5672:5672 \ RabbitMQ的消息发送处理接口
- --network hm-net\ 网络,与项目中mysql等处于同一网络中
- -d \ 后台运行
- rabbitmq:3.8-management 指定版本
首次创建容器没有相应镜像等待自动拉取就行
命令查看
docker ps
可以看到mq已成功部署
我们此时可以查看日志(日志可以看到mq成功监听到了两个端口)
安装完成后,我们访问 http://192.168.226.103:15672(根据自己虚拟机ip更改即可)即可看到管理控制台。首次访问需要登录,默认的用户名和密码在配置文件中已经指定了。
登录后即可看到管理控制台总览页面:
此时mq已经成功部署