Alibaba Cloud Linux 2.1903 LTS 64位 搭建 RocketMQ 4.7.1

RocketMQ简介

RocketMQ 是阿里巴巴在 2012 年开源的消息队列产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进,后来捐赠给 Apache 软件基金会,2017 正式毕业,成为 Apache 的顶级项目。RocketMQ 在阿里内部被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,Binglog 分发等场景。经历过多次双十一考验,它的性能、稳定性和可靠性都是值得信赖的。

RocketMQ 有着不错的性能,稳定性和可靠性,具备一个现代的消息队列应该有的几乎全部功能和特性,并且它还在持续的成长中。

RocketMQ 有非常活跃的中文社区,大多数问题可以找到中文的答案。RocketMQ 使用 Java 语言开发,源代码相对比较容易读懂,容易对 RocketMQ 进行扩展或者二次开发。

RocketMQ 对在线业务的响应时延做了很多的优化,大多数情况下可以做到毫秒级的响应,如果你的应用场景很在意响应时延,那应该选择使用 RocketMQ。

RocketMQ 的性能比 RabbitMQ 要高一个数量级,每秒钟大概能处理几十万条消息。

RocketMQ 的劣势是与周边生态系统的集成和兼容程度不够。

详情:https://www.cnblogs.com/liran123/p/13813112.html

RocketMQ搭建

阿里巴巴其中一个核心分布式技术是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

 

我是下载后直接放到linux服务器中,没有用wget命令下载

如果你的操作软件没有拖拽文件功能可以用wget:

此代码在哪运行安装包就会下在哪,如果在根目录执行的就会下在root里,我是安装在了 /usr/local/rocketMq 中

wget https://github.com/apache/rocketmq/archive/rocketmq-all-4.7.1.tar.gz

 

解压包:

tar -zxvf rocketmq-all-4.7.1.tar.gz

二、安装maven插件,如果安装了maven则可忽略

1、由于下载到的rocketmq是源码,需要对源码进行编译,编译使用maven,若linux没有安装,需做该操作

cd /usr/local

mkdir maven

cd maven

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/maven/apache-maven-3.6.3/conf/settings.xml

2、新增maven镜像地址为阿里云地址:

  <mirrors>

	<mirror>
		 <id>alimaven</id>
	 	<mirrorOf>central</mirrorOf>
	 	<name>aliyun maven</name>
	 	<url>https://maven.aliyun.com/repository/central</url>
	</mirror>

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    
  </mirrors>

3、修改本地仓库为/usr/local/maven/repository,但是需要注意的是需要LINUX机器/usr/local/maven下没有repository文件夹,故而需要手动创建

cd /usr/local/maven
mkdir repository

以下配置加在镜像地址后面即可

<localRepository>/usr/local/maven/repository</localRepository>

4、配置环境变量,编辑文件/etc/profile

vim /etc/profile

"i"进入编辑状态

在最下面添加以下内容

MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

编辑后esc退出编辑后 :wq 回到命令行

5、重新激活一下/etc/profile文件

source /etc/profile
mvn -version

maven配置成功

三、编译rocketmq

在rocketmq目录下执行 ,我的目录是:/usr/local/rocketMq

mvn -Prelease-all -DskipTests clean install -U

如图

 

四、修改broker.conf配置文件

conf/broker.conf 中 加入 brokerIP1=你的公网IP

cd /usr/local/rocketMq/rocketmq-rocketmq-all-4.7.1/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/conf

vim broker.conf

 

五、rocketmq 启动

该目录就是编译后的rocketmq: /usr/local/rocketMq/rocketmq-rocketmq-all-4.7.1/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1

1、启动命令 

注: /data/mq/rocketmq目录没有先要自己创建以下目录

启动NameServer:

nohup sh bin/mqnamesrv > /data/mq/rocketmq/nameserver.log 2>&1 &

查看启动信息:

jps 

启动broker:

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服务关闭,先关闭Broker、再关闭NameServer,服务启动的时候正好相反。

关闭broker服务 :

sh bin/mqshutdown broker

关闭namesrv服务:

sh bin/mqshutdown namesrv

六、内存不足错误

如果出现内存不足错误,如图:

这是因为 /usr/local/rocketMq/rocketmq-rocketmq-all-4.7.1/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin 目录下启动 nameserv 与 broker 的 runbroker.sh 和 runserver.sh 文件中默认分配的内存太大,而系统实际内存却太小导致启动失败。解决办法就是修改runbroker.sh 和 runserver.sh里的内存配置,调小一些即可。

七、开放安全组

NameServer的9876端口、Broker的10911、11011、10909、11009端口

如果有防火墙、nginx将端口开放

八、注意

如果出现org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout错误

请参考:https://blog.csdn.net/qq_21460229/article/details/104351178

九、配置rocketmq-console可视化工具

1. 下载开源的rocketmq-externals项目

https://github.com/apache/rocketmq-externals

2. 找到rocketmq-console,先编辑一下rocketmq-console里面的application.properties文件,将项目使用的rocketmq.config.namesrvAddr配置上去(或者在项目启动时,以参数的形式配进去)

如果本地启动则此处为:自己的外网IP:9876

3.将pom文件中mq版本改为自己的mq版本

4.将项目打成jar包放在服务器中运行即可

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值