RocketMq是阿里出品(基于MetaQ)的开源中间件,已捐赠给Apache基金会并成为Apache的顶级项目。基于java语言实现,十万级数据吞吐量,ms级处理速度,分布式架构,功能强大,扩展性强。
官网:RocketMQ
1.RocketMQ、ActiveMQ、Kafka
产品 | ActiveMQ | Kafka | RocketMQ |
客户端SDK | java, .NET, C++ etc. | Java, Scala etc. | Java, C++, Go |
协议和规范 | 推送模型, support OpenWire, STOMP, AMQP, MQTT, JMS | 拉取模型, support TCP | 拉取模型, support TCP, JMS, OpenMessaging |
顺序消息 | 独占消费者或独占队列可以确保排序 | 确保消息在分区内的顺序 | 确保消息的严格顺序,并且可以优雅地扩展 |
定时消息 | 支持 | 不支持 | 支持 |
批量消息 | 不支持 | 支持,异步生产者 | 支持,具有同步模式以避免消息丢失 |
广播消息 | 支持 | 不支持 | 支持 |
消息赛选 | 支持 | 支持, 您可以使用Kafka Streams过滤消息 | 支持,基于SQL92的属性筛选器表达式 |
重新投送 | 不支持 | 不支持 | 支持 |
消息持久化 | 支持DB | 高性能文件存储 | 高性能、低延迟的文件存储 |
消息回溯 | 支持 | 支持的偏移量指示 | 支持的时间戳和偏移量二表示 |
消息优先级 | 支持 | 不支持 | 不支持 |
高可用性和故障切换 | 支持,取决于存储,如果使用levelDB,则需要ZooKeeper服务器 | 支持,需要ZooKeeper服务器 | 支持,主从式,不带其他套件 |
消息跟踪 | 不支持 | 不支持 | 支持 |
管理和操作工具 | 支持 | 支持,使用终端命令公开核心度量 | 支持丰富的web和终端命令,以公开核心指标 |
2.安装部署
2.1 检查安装java环境
64位 JDK 1.8+
LINUX安装JDK
2.2 部署RocketMq
源码包
https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-source-release.zip
二进制包:直接运行
https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip
2.2.1 Linux二进制安装
wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip
unzip rocketmq-all-5.1.4-bin-release.zip
mv rocketmq-all-5.1.4-bin-release rocketmq5.1.4
2.2.2 启动NameServer
注意如果咱们内存不够充裕,请修改runserver.sh【默认4g+】。
cd rocketmq5.1.4/bin
# 启动namesrv
nohup sh mqnamesrv &
# 验证namesrv是否启动成功
tail -fn300 ~/logs/rocketmqlogs/namesrv.log
# 关闭namesrv
mqshutdown namesrv
2.2.3 启动Broker+Proxy
注意如果咱们内存不够充裕,请修改runbroker.sh【默认8g+】。
cd rocketmq5.1.4/bin
# 启动broker
nohup sh mqbroker -n localhost:9876 --enable-proxy &
# 验证broker是否启动成功
tail -fn300 ~/logs/rocketmqlogs/proxy.log
# 关闭broker
mqshutdown broker
3.安装视化工具
源码地址:apache/rocketmq-dashboard
下载并解压,切换至源码目录 rocketmq-dashboard-master/
3.1 编译 rocketmq-dashboard
mvn clean package -Dmaven.test.skip=true
3.2 运行 rocketmq-dashboard
java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
默认端口8080