阿里巴巴其中一个核心分布式技术是RocketMq ,作为一款分布式的消息中间件,经过了淘宝双十一的洗礼,在功能和性能上远超过activeMq
1.要知道RocketMQ原生就是支持分布式的,而ActiveMQ原生存在单点性。
2.RocketMQ可以保证严格的消息顺序,而ActiveMQ无法保证!
3.RocketMQ提供亿级消息的堆积能力,这不是重点,重点是堆积了亿级的消息后,依然保持写入低延迟!
4.丰富的消息拉取模式(Push or Pull)
Push好理解,比如在消费者端设置Listener回调;而Pull,控制权在于应用,即应用需要主动的调用拉消息方法从Broker获取消息,这里面存在一个消费位置记录的问题(如果不记录,会导致消息重复消费)。
5.在Metaq1.x/2.x的版本中,分布式协调采用的是Zookeeper,而RocketMQ自己实现了一个NameServer,更加轻量级,性能更好!
6.消息失败重试机制、高效的订阅者水平扩展能力、强大的API、事务机制等等(后续详细介绍)
详情:https://www.jianshu.com/p/3afd610a8f7d
以下进行安装步骤:
一、 获取rocketmq 下载链接
在github上找到对应的版本,获取到下载链接,https://github.com/apache/rocketmq/releases 点击对应的版本,右键获取复制链接地址,得到https://github.com/apache/rocketmq/archive/rocketmq-all-4.7.1.tar.gz
二、执行命令
wget https://github.com/apache/rocketmq/archive/rocketmq-all-4.7.1.tar.gz
tar -zxvf rocketmq-all-4.7.1.tar.gz
三、安装maven插件
、1、由于下载到的rocketmq是源码,需要对源码进行编译,编译使用maven,若linux没有安装,需做该操作
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz
vim /usr/local/src/apache-maven-3.6.3/conf/setting.xml 新增maven镜像http://maven.aliyun.com/nexus/content/groups/public/,如图1
2、配置环境变量,编辑文件/etc/profile在最下面添加以下内容(如图2)
MAVEN_HOME=/usr/local/src/apache-maven-3.6.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
3、验证 mvn -v 得到maven信息,则成功配置完成
四、编译rocketmq
在rocketmq目录下执行 mvn -Prelease-all -DskipTests clean install -U 如图
五、rocketmq 启动
/rocketmq-rocketmq-all-4.7.1/distribution/target/rocketmq-4.7.1 该目录就是编译后的rocketmq
1、启动命令
nohup sh bin/mqnamesrv > /data/mq/rocketmq/nameserver.log 2>&1 &
jps (查看启动信息)
nohup sh bin/mqbroker -n 127.0.0.1:9876 -c conf/broker.conf autoCreateTopicEnable=true > /data/mq/rocketmq/broker.log 2>&1 &
2、rocketmq服务关闭
关闭namesrv服务:sh bin/mqshutdown namesrv
关闭broker服务 :sh bin/mqshutdown broker
注:启动broket将参数也配置conf/broker.conf加上配置,否则启动生产者提示
参考:https://blog.csdn.net/qq_21460229/article/details/104351178
六、修改broker.conf配置文件
安全组需要开放10909和10911端口,其中10911是非VIP通道,10909是VIP通道。
若启动broker出现内存不足错误,如图
这是因为 apache-rocketmq/bin 目录下启动 nameserv 与 broker 的 runbroker.sh 和 runserver.sh 文件中默认分配的内存太大,而系统实际内存却太小导致启动失败。解决办法就是修改runbroker.sh 和 runserver.sh里的内存配置,调小一些即可。
参考https://www.cnblogs.com/2YSP/p/11616376.html
六、配置nginx 域名访问,重启nginx
./nginx -s reload
对外提供9876端口,协议在stream模块中新增。
七、 访问管理界面 (需安装rocketmq-console插件)
网友评论