一、 rocketmq 消息队列
1、介绍
阿里开源的一款高性能、高吞吐量的分布式消息队列中间件。
特点:
响应快:高并发的情况下1ms 响应情况占比超过99.6%
高一致性:使用于金融行业,高性能追踪以及审计模式
多模型:支持订阅+点对点
支持多方式:支持pull+push两种消息模式
高性能:单一队列百万级别
更安全:支持单master+多master节点+多master多slave节点
2、概念:
producer:消息生产者
producer:group:消息生产组,发送同类消息的一个消息生产组
consumer:消费者
consumer group:消费同个消息的多个实例
tag:标签,子主题(二级分类),用于区分同一个主题下的不同业务的消息
topic 主题
message:消息
broker:mq程序,接收生产的消息,提供给消费者消费的程序
name server:给生产和消费者提供路由信息,提供轻量级的服务发现和路由
3、官网地址:http://rocketmq.apache.org
4、GitHub 源码地址:https://github.com/apache/rocketmq
二、 快速部署rocketmq
1、下载安装
地址: http://rocketmq.apache.org/
安装须知: “ * ” 为硬性要求
64bit OS, Linux/Unix/Mac is recommended; *
64bit JDK 1.8+;(必须)*
Maven 3.2.x; *
Git;
4g+ free disk for Broker server(不是硬性要求但需要更改内存配置)
步骤:
1、启动:
1、本地widows安装启动
解压——>进入bin ——>使用cmd命令——>start mqnamesrv(启动名称服务)
进入bin ——>使用cmd命令——>start mabroker(启动broker)
建议增加属性:mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true
2、 linux/os/mac 环境安装
解压
unzip rocketmq-all-4.6.0-bin-release.zip
1
修改文件夹名
mv rocketmq-all-4.6.0-bin-release rocketmq-4.6
1
进入到rocketmq-4.6(我的版本是4.6版本)
启动名称服务
建议使用守护进程 :启动名称服务
nohup sh bin/mqnamesrv & 不指定IP启动默认本地
nohup sh bin/mqnamesrv -n 你的电脑IP:9876 & 命令开启
使用tail -f nohup.out
发现 :The Name Server boot success. serializeType=JSON 说明启动成功
启动broker
官网命令:nohup sh bin/mqbroker -n localhost:9876 &
建议使用命令 nohup sh bin/mqbroker -n 你的电脑IP:9876 -c conf/broker.conf autoCreateTopicEnable=true &
三、安装可视化控制台
-
GitHub下载地址: https://github.com/apache/rocketmq-externals
进入到console项目目录使用maven命令打包cd rocketmq-externals\rocketmq-console mvn clean package -Dmaven.test.skip=true 使用java -jar 启动
上述打包操作 windows 和Linux都可以
如果发现可视化控制台出现无法连接远程broker 修改配置文件.properties
四、问题
1、rocketmq 启动mqbroker.cmd闪退?(之前电脑有意外关机过)
猜测原因是由于电脑上一次非正常关机(停电或者意外崩溃),运行中的mq被强迫中止。
解决办法:将C:\Users\Administrator\store文件夹下的文件全部删除,则可以正常启动
连接超时?
org.apache.rocketmq.remoting.exception.RemotingException sendDefaultImpl call timeout
原因:
1、防火墙没有开放端口
2、如果是阿里云等服务器没有配置安全组
3、找不到对应的broker IP
问题解决:
1>、防火墙开放端口 9876 、10909 、10911
9876:namesrv 访问端口
10911:broker 访问端口
10909:数据VIP访问端口
2>、设置安全组
3>、修改配置文件
使用命令 vi rocketmq-4.6/conf/broker.conf
添加 brokerIP1=47.xx.xx.93(你的外部服务器地址(安装在阿里云服务器上),如果是本地就是本机IP)
2、问题:No route info of this topic 没有topic信息?
产生原因:
1、Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic
2、Broker没有正确连接到Name Server
3、Producer没有正确连接到Name Server
问题解决 :启动命令加上 autoCreateTopicEnable=true
3.问题3 There is insufficient memory for the Java Runtime Environment to continue.内存不够
产生原因:rocketmq启动要求4G 内存所以需要修改启动配置
解决:
原配置:-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m
你需要进到bin目录下 使用 vi runserver.sh 以及runbroker.sh 修改成下面内存占用
vi runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
vi runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"
然后使用 jps 命令查看Java进程 kill -9 pid 杀死rocketmq 进程 重启rocketmq服务