阿里巴巴其中一个核心分布式技术是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加上配置,否则启动生产者提示

后台启动

./mqshutdown broker

./mqshutdown namesrv

nohup ./mqnamesrv -n 192.168.0.1:9876 > /data/mq/rocketmq/nameserver.log 2>&1 &


nohup ./mqbroker -n 192.168.0.1:9001 -c ../conf/broker.conf autoCreateTopicEnable=true > /data/mq/rocketmq/broker.log 2>&1 &

指定端口启动

编辑文件

vim namesrv.properties

内容为:listenPort=5432

启动指定配置文件:nohup ./mqnamesrv -c namesrv.properties > /data/mq/rocketmq/nameserver.log 2>&1 &

nohup ./mqnamesrv -n 192.168.1.1:9876   > /data/mq/rocketmq/nameserver.log 2>&1 &
编辑broker.conf   添加 

namesrvAddr = 

brokerIP1=

上面两个配置项   注意如果是阿里云或者腾讯云,记得使用外网地址
nohup sh bin/mqbroker -n 192.168.1.1:9876 -c conf/broker.conf autoCreateTopicEnable=true > /data/mq/rocketmq/broker.log 2>&1 &

springboot集成rocketMQ要注意,客户端的版本要和服务端一致

参考: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插件)

console  安装地址

(4条消息) window安装rocketMq_进行中-CSDN博客

cd  /opt/rocketMQ/rocketmq-rocketmq-all-4.7.1/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin
nohup ./mqnamesrv -n localhost:9876   > /data/mq/rocketmq/nameserver.log 2>&1 &

nohup sh ./mqbroker -n localhost:9876 -c ../conf/broker.conf autoCreateTopicEnable=true > /data/mq/rocketmq/broker.log 2>&1 &

nohup java -jar rocketmq-console-ng-1.0.0.jar --server.port=9000 --rocketmq.config.namesrvAddr=localhost:9876 > console.log 2>&1 &

 mvn clean package -DskipTests=true

编译成功之后,Cmd进入‘target’文件夹,执行‘java -jar rocketmq-console-ng-1.0.0.jar’,启动‘rocketmq-console-ng-1.0.0.jar’。

cd  /opt/rocketMQ/rocketmq-rocketmq-all-4.7.1/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin
nohup ./mqnamesrv -n 8.142.131.56:9876   > /data/mq/rocketmq/nameserver.log 2>&1 &

nohup sh ./mqbroker -n 8.142.131.56:9876 -c ../conf/broker.conf autoCreateTopicEnable=true > /data/mq/rocketmq/broker.log 2>&1 &

nohup java -jar rocketmq-console-ng-1.0.0.jar --server.port=9003 --rocketmq.config.namesrvAddr=8.144.160.27:9876 > console.log 2>&1 &

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐