技术对比
MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。
比较常见的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提供了6种消息模型,但是第6种其实是RPC,并不是MQ,那么也就剩下5种:
安装RabbitMQ
安装
RabbitMQ已经安装到docker中
#拉取镜像
docker pull rabbitmq:management
#创建容器并启动
docker run -id --name=rabbit --hostname=rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
RabbitMQ启动成功后暴露两个端口
java应用端连接:192.168.136.10:5672
管理后台地址:http://192.168.136.10:15672
管理员账号/密码 guest/guest