MQ 之 RoketMQ(下载、安装、快速启动、控制台、集群部署)

前言

本文记录RocketMQ的相关知识,第一次学MQ,可能记录的不太完整,后续会进行相应的补充说明。

一、MQ

1、什么是MQ

MQ指message queue,是一种提供消息队列服务消息中间件。是一套提供了消息生产、存储、消费全过程API的软件系统。
MQ最主要的作用:
限流削峰:MQ可以将系统超量的请求存放其中,以便系统后续慢慢处理,不会导致请求的丢失和系统被压垮。
异步解耦:上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。而异步调用则会解决这些问题。可增加MQ转为异步调用。
数据收集:分布式系统会产生海量级数据流,如:业务日志,监控数据,用户行为等。针对这些数据流进行实时或批量采集汇总,然后对这些数据进行大数据分析,这是当前互联网平台的必备技术。

2、常见的MQ

ActiveMQ:Java开发的MQ,目前已经很少使用。
RabbitMQ:Erlang开发的MQ,吞吐量较RocketMQ和Kafka低。因其开发语言,公司内部对其进行定制化开发难度较大。
Kafka:Scala/Java开发的MQ,最大特点就是高吞吐率,常用于大数据领域的实时计算,日志采集等场景。其没有遵循任何常见的MQ协议,是使用自研协议。
RocketMQ:Java开发的MQ,阿里巴巴开发,性能和稳定性都非常高,其没有遵循任何常见的MQ协议,是使用自研协议。

二、RocketMQ的下载与安装

下载

下载地址:官网地址
官网的下载会比较缓慢,此处提供个人的百度云资源:
链接:https://pan.baidu.com/s/1cm9tfC4DuKJqmcAVRr8BIA
提取码:1obe
官网首页
在这里插入图片描述
点击此处链接进行下载。
zip包下载页

安装

1、上传

将下载好的文件,上传到服务器。
在这里插入图片描述

2、解压

文件为zip,使用unzip解压。

unzip rocketmq-all-4.9.4-bin-release.zip

在这里插入图片描述

三、RocketMQ的快速启动

快速启动在官网是写详细步骤的,可以参考官网快速启动

注意:
在启动之前,我们需要修改两个文件,分别为bin/runserver.sh和runbroker.sh,因为这两个文件的启动需要特别大的内存,我们需要改小一些,否则会无法启动。当然,如果是真实的服务器,满足条件的情况下是不需要的,一般使用虚拟机的是需要修改的。
如下:
runserve.sh:下面的截图只修改了if中的。记得把else里的也一并修改。有的版本和我的版本不一样,大家找到对应的位置修改即可。
在这里插入图片描述
runbroker.sh
在这里插入图片描述
都按照比例进行修改,这个根据自己电脑的性能修改就好,我是改为了256m和128m,可供参考。

解下来的命令注意是在mq文件夹下执行哦。否则路径要写绝对路径。

1、启动Name Server

# 启动命令
nohup sh bin/mqnamesrv &
# 启动后查看是否启动后成功
tail -f ~/logs/rocketmqlogs/namesrv.log
# 当发现有The Name Server boot success...表示成功启动

2、启动Broker

# 启动命令
nohup sh bin/mqbroker -n localhost:9876 &
# 启动后查看是否启动后成功
tail -f ~/logs/rocketmqlogs/broker.log 
# 当发现有The broker[%s, 172.30.30.233:10911] boot success...表示成功启动

3、发送和接收消息

启动完成后,我们需要测试一下是否成功启动,是否能够正常运行,我们使用如下操作进行测试。
我们有很多方式进行发送,最简单的一种就是使用环境变量NAMESRV_ADDR
发送:

export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

接受:

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

当看见有很多消息出来就表示成功了。耐心等待它运行完就好。

4、关闭服务

# 关闭broker
sh bin/mqshutdown broker
# 关闭nameserver
sh bin/mqshutdown namesrv

四、RocketMQ的dashboard

RocketMQ有一个可视化的dashboard控制台,可以非常直观的看到MQ中各项参数。不过需要单独下载、安装、运行。

1、下载

下载地址:https://github.com/apache/rocketmq-externals/releases
在这里插入图片描述
在这里插入图片描述

2、修改

下载后,解压文件,将里面的rocketmq-console项目文件夹单独拎出来,需要对这个文件进行部分修改。
1) 修改application.properties
将服务的端口修改了。8080是tomcat默认端口,避免冲突。
nameserver 的地址也要加上,在启动的时候指定的ip和端口。
在这里插入图片描述
2) 添加jaxb依赖

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

打包

进入rocketmq-console项目里,对项目进行打包。使用cmd输入如下命令。此步骤花费时间较长。

mvn clean package -Dmaven.test.skip=true

运行

在target里将打包好的jar包拿出来,然后运行,使用cmd输入如下命令。

java -jar rocketmq-console-ng-1.0.0.jar

测试

控制台页面地址:localhost:7000
在message里查看topictest里是否有消息。这是需要测试过消息发送才会有的哦~,也可以看看其他菜单界面。
在这里插入图片描述

五、RokectMQ集群搭建

1、克隆两台虚拟机

修改虚拟机hostname,设置静态IP,将recketMQ的压缩包上传并解压,修改启动配置,给两台虚拟机增加映射。
上述操作,上文或本人其他文章都有详细描述,此处不再赘述。
C:\Windows\System32\drivers\etc\hosts
在这里插入图片描述

2、修改配置文件

因为条件的限制,我只用两台服务器来测试,第一台rocketmq1作为master1和slave2,第二台rocketmq2作为master2和slave1.并且还有充当NameServer和Broker的功能,因此,需要一些配置。
此处只记录rocketmq1的步骤,rocketmq2的步骤类似。

2.1 进入rocketmq的conf文件夹

在这个文件夹里,有三种集群配置模板

  • 2m-2s-async 表示2主2从异步模式
  • 2m-2s-sync 表示2主2从同步模式
  • 2m-noslave 表示2主没有从模式
    在这里插入图片描述

2.2 进入2m-2s-async这个文件夹

当前文件夹里有4个配置文件。

  • broker-a.properties 第一个集群master的配置
  • broker-a-s.properties 第一个集群slave的配置
  • broker-b.properties 第二个集群master的配置
  • broker-b-s.properties 第二个集群slave的配置
    在这里插入图片描述
    根据我们的需求,rocketmq1里需要配置master1和slave2,所以我们需要修改broker-a.properties和broker-b-s.properties配置文件

2.3 修改broker-a.properties

vim broker-a.properties

新增namesrvAddr

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.61.102:9876;192.168.61.103:9876

2.4 修改broker-b-s.properties

vim broker-b-s.properties

新增NameServer地址namesrvAddr
新增通信端口listenPort
新增存储位置。因为我们将master和slave都部署一个服务器上,master使用了默认地址,我们就需要将slave 的存储地址进行修改。

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.61.102:9876;192.168.61.103:9876
listenPort=11911
storePathRootDir=~/store-s
storePathCommitLog=~/store-s/Commitlog
storePathConsumeQueue=~/store-s/consumequeue
storePathIndex=~/store-s/index
storeCheckPoint=~/store-s/checkpoint
abortFile=~/store-s/abort

2.5 master配置文件说明

修改broker-a.properties时,配置文件里各个字段的说明。
在这里插入图片描述

2.5 slave配置文件说明

修改broker-b-s.properties时,配置文件里各个字段的说明。
在这里插入图片描述

3、集群的启动

集群的启动和单机版的启动差别不大,解下来就详细说明一下。

3.1 启动rocketmq1的NameServer

# 启动命令
nohup sh bin/mqnamesrv &

3.2 启动rocketmq1的master broker

# 启动命令
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &

3.3 启动rocketmq1的slave broker

# 启动命令
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties &

3.4 启动rocketmq2的NameServer

# 启动命令
nohup sh bin/mqnamesrv &

3.5 启动rocketmq2的master broker

# 启动命令
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties &

3.6 启动rocketmq2的slave broker

# 启动命令
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties &

启动成功。
当然,我们也可以使用dashboard,注意,记得修改一下配置文件。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值