分布式消息队列RocketMQ的安装与启动

前提:
·会用到maven的一些知识
·还有Linux的基本命令的操作
·还有Springboot的一些知识

一、基本概念

1.消息
消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题
2.Topic
表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。 大白话就是把消息进行分类
3.标签(Tag)
为消息设置的标签,用于同一主题下区分不同类型的消息。来自同一业务单元的消息,可以根据不同业务目的在同一主题下设置不同标签。标签能够有效地保持代码的清晰度和连贯性,并优化RocketMQ提供的查询系统。消费者可以根据Tag实现对不同子主题的不同消费逻辑,实现更好的扩展性。

Topic是消息的一级分类,Tag是消息的二级分类。

4.队列(Queue)
存储消息的物理实体。一个Topic中可以包含多个Queue,每个Queue中存放的就是该Topic的消息。一个Topic的Queue也被称为一个Topic中消息的分区(Partition)。

看下面两句话:有点绕,多读两遍

一个Topic的Queue中的消息只能被一个消费者组中的一个消费者消费。
一个Queue中的消息不允许同一个消费者组中的多个消费者同时消费。

5.分片(Sharding)
分片不同于分区。在RocketMQ中,分片指的是存放相应Topic的Broker。每个分片中会创建出相应数量的分区,即Queue,每个Queue的大小都是相同的。

6.消息标识(Message/Key)
RocketMQ中每个消息拥有唯一的MessageId,且可以携带具有业务标识的Key,以方便对消息的查询。

MessageId有两个
在生产者send()消息时会自动生成一个MessageId(msgId),
当消息到达Broker后,Broker也会自动生成一个MessageId(offsetMsgId)。
msgId、offsetMsgId与key都称为消息标识。


二、单机安装与启动

2.1准备工作
·软硬件需求
 系统要求是64位的,JDK要求是1.8及其以上版本的。
·下载RocketMQ安装包
 版本选择:https://archive.apache.org/dist/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip
 将下载的安装包上传到Linux(也可以直接使用wget命令下载到Linux)
#先安装解压zip文件的指令
[root@localhost soft] yum install -y unzip
#挑选一个合适的位置下载资源
[root@localhost soft] wget https://archive.apache.org/dist/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip
#在下载目录下面解压文件
[root@localhost soft] unzip rocketmq-all-4.9.0-bin-release.zip
#查看下载好文件的目录结构
[root@localhost soft] ll ./rocketmq-all-4.9.0-bin-release/
#内容如下
total 48
drwxr-xr-x 2 root root  4096 Jun 11  2021 benchmark
drwxr-xr-x 3 root root  4096 Jun 11  2021 bin
drwxr-xr-x 6 root root  4096 Jun 11  2021 conf
drwxr-xr-x 2 root root  4096 Jun 11  2021 lib
-rw-r--r-- 1 root root 17327 Jun  9  2021 LICENSE
-rw-r--r-- 1 root root  1338 Jun  9  2021 NOTICE
-rw-r--r-- 1 root root  5132 Jun  9  2021 README.md
2.2修改初始内存

修改的目的:
``--------------------------------------------------
由于在新建虚拟机的过程中,所分配的内存空间有限,且在首次下载RocketMQ之后都会有一个默认值,可能会对你的虚拟机内存造成极强大的负荷,建议修改。

修改runserver.sh

#使用vim命令打开bin/runserver.sh文件 没有vim的可以使用vi
#改内容所在位置在倒数第10行左右(可是使用大写的g来跳转到文件的末尾)
JAVA_OPT="${JAVA_OPT} -server -Xms256M -Xmx256M -Xmn128M -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

修改runbroker.sh

#使用vim命令打开bin/runbroker.sh文件。 值修改如下:
#67行左右,或者倒数24行
JAVA_OPT="${JAVA_OPT} -server -Xms256M -Xmx256M -Xmn128M"
2.3启动

参考官网:链接: https://rocketmq.apache.org/docs/quickStart/02quickstart/

启动NameServer

### start namesrv 在rockerMQ目录下面执行命令
nohup sh bin/mqnamesrv &
### verify namesrv  验证日志,
##如果查看发现异常,不影响下面的操作哈~可以跳过不用进行,只要服务启动了就可以了
tail -f ~/logs/rocketmqlogs/namesrv.log
##结果
	The Name Server boot success...

查看进程

##通过指令jps查看进程启动情况
jps
#结果 有两个进程启动
20147 NamesrvStartup
20167 Jps

启动broker

### start broker
nohup sh bin/mqbroker -n localhost:9876 &

### verify broker
tail -f ~/logs/rocketmqlogs/broker_default.log 
##查看日志,也可以不用看,如果查看发现异常,不影响下面的操作哈~
The broker[broker-a,192.169.1.2:10911] boot success...
2.4发送/接收消息测试

export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
##发送消息....看见一大堆有规律的就算发送成功
SendResult [sendStatus=SEND_OK, msgId= ...

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
##接收消息...看见一大堆有规律的就算接收成功
ConsumeMessageThread_%d Receive New Messages: [MessageExt...

2.5关闭Server
#指令
sh bin/mqshutdown broker
#结果
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

#指令
sh bin/mqshutdown namesrv
#结果
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

三、控制台的安装和启动

3.1是什么

RocketMQ有一个可视化的dashboard,通过该控制台可以直观的查看到很多数据。

3.2下载地址

官方地址: https://github.com/apache/rocketmq-dashboard

3.3修改配置

1.端口号

修改其src/main/resources中的application.yml配置文件。

  • 原来的端口号为8080,修改为一个不常用的,如7000
    如下图所示:
    在这里插入图片描述
  • 指定RocketMQ的name server地址
    在这里插入图片描述

其中的端口号为上面启动broker:nohup sh bin/mqbroker -n localhost:9876 &
设置的,如果配置文件中设置了端口号,但是虚拟机中为执行上述指令,会导致他们之间没有数据交互的。

2.添加依赖

在rocketmq-dashboard-master文件下面的pom.xml中添加如下依赖

<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>
3打包

在文件夹所在栏目输入cmd指令,打开小黑窗,开始进行后续操作。
在这里插入图片描述

在rocketmq-console目录下运行maven的打包命令。

mvn clean package -Dmaven.test.skip=true

在打包过程中,可能会出现问题,刚开始运行,就出现错误,可能的原因是你的maven中缺少内容,提取下面的资源,放到对应的地方,进行解压就可以了

在这里插入图片描述

下载下面链接中的资源------------------
链接:https://pan.baidu.com/s/1OhGeZ4Yue6DkFOR7W4FSEQ?pwd=a1b2
提取码:a1b2

在这里插入图片描述

4.启动
java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

启动成功如下:
在这里插入图片描述

5.访问

和上面配置文件中的端口号保持一致
http://localhost:7777/

6.访问成功的界面如下

在这里插入图片描述
2.
在这里插入图片描述
3.下拉菜单滑倒最下面选中选项
在这里插入图片描述
4.点击search,出现下面的数据即表示成功了。
在这里插入图片描述

四、调试过程中可能遇到的问题

1.访问url的时候未响应

可能是虚拟机的防火墙没有关闭,这样就访问不到,关闭之后重新访问

2.所有准备工作做好之后,访问网址的时候,长时间未响应,也没有出现任何的错误,该怎么办?

可以在cmd的黑窗口里面 ctrl+c 操作一下可以解决这个神奇的问题。

3.如果在客户端点击search之后未显示数据

有可能是虚拟机中MQ未执行消息发送的命令 参考上面的2.4发送/接收消息测试

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值