RocketMQ 系列(二) 环境搭建
RocketMQ 系列(二) 环境搭建
上一个章节对于 RocketMQ 作了一些概念上的介绍,如果你对于 RocketMQ 没有概念,不妨先看RocketMQ系列(一) 基本介绍。
这个章节主要介绍 RocketMQ 的环境搭建与安装。
1、准备工作
1.1、环境要求
- Linux64 位系统
- JDK1.8 64位及以上
1.2、安装 JDK1.8
RocketMQ 我在这里用的是 Linux 服务器安装的,安装之前需要先装好 JDK 。
查询 JDK 可用版本:
yum -y list java*
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令
选择安装 JDK1.8:
yum install -y java-1.8.0-openjdk.x86_64
检验安装:
java -version
2、安装 RocketMQ
2.1、下载并解压
下载地址:官网下载地址
首先在 Linux 服务器创建文件夹用于存放即将下载的 RocketMQ
mkdir usr/rocketmq
cd usr/rocketmq
文件夹创建好之后,从官网上复制想要下载的 RocketMQ 版本链接,我下载的版本是4.9.6,使用远程下载命令:
wget https://archive.apache.org/dist/rocketmq/4.9.6/rocketmq-all-4.9.6-bin-release.zip
下载完后解压:
unzip rocketmq-all-4.9.6-bin-release.zip
然后进入 rocketmq-all-4.9.6-bin-release 文件夹:
cd rocketmq-all-4.9.6-bin-release
文件夹包含了以下文件:
bin
:启动脚本,包括 shell 脚本和 CMD 脚本conf
:实例配置文件 ,包括 broker 配置文件、logback 配置文件等lib
:依赖 jar 包,包括Netty、commons-lang、FastJSON等
下载解压完成,那么剩下的就是怎么启动的问题了。
2.2、启动 NameServer
RocketMQ
默认的虚拟机内存较大,启动 Broker
或者 NameServer
可能会因为内存不足而导致失败,所以需要编辑这两个地方的配置文件,修改 JVM 内存大小
编辑 runserver.sh
vim bin/runserver.sh
按键盘 i
切换输入模式, 修改地方如下图:
参考 JVM 参数设置
-server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m
按 ESC
退回普通模式,输入:wq
保存文件并退出 vim 编辑。
:wq
启动 NameServer
nohup sh bin/mqnamesrv &
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
想知道启动成功与否,那就要看对应的启动日志,查看 NameServer
日志:
tail -f ~/logs/rocketmqlogs/namesrv.log
如果能看到以下日志,表示启动成功:
2.3、启动 Broker
同理修改 Broker
与NameServer
类似,编辑 JVM 参数并启动。
编辑 runbroker.sh
vim bin/runbroker.sh
要修改的就是下图位置:
参考 JVM 参数设置
-server -Xms256m -Xmx256m -Xmn128m
保存并退出 vim 编辑。
修改 Broker 配置文件
Broker
需要向NameServer
注册,所以还需要指定NameServer
的地址。
因为NameServer
跟Broker
在同一台机器,所以是 localhost,NameServer 端口默认的是 9876。
编辑broker.conf
vim conf/broker.conf
在文件末尾添加以下配置:
namesrvAddr = localhost:9876
brokerIP1 = 192.168.0.17
brokerIP1
记得修改成自己的服务器 IP 地址。
启动 Broker
启动时指定读取上面的配置文件:
nohup sh bin/mqbroker -c conf/broker.conf &
-c
:指定配置文件路径-n
:NameServer 的地址
查看日志:
tail -f ~/logs/rocketmqlogs/broker.log
看到以下信息,说明已经启动成功了。
2.4、测试
启动完NameServer
及Broker
,可以进行简单的测试。
首先设置环境变量
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
接收到的消息截图如下:
2.5、关闭 RocketMQ
关闭NameServer
及Broker
的命令如下:
# 1.关闭NameServer
sh bin/mqshutdown namesrv
# 2.关闭Broker
sh bin/mqshutdown broker
2.6、开放端口
启动完 RocketMQ后,要开放的端口一般有4个:9876,10911,10912,10909
端口说明
9876:Nameserver 的端口
10911: listenPort, 是 Broker的监听端口,是 RemotingServer 服务组件使用,作为对 Producer 和 Consumer 提供服务的端口号,默认为10911,可以通过 broker.conf 配置文件修改。
#Broker 对外服务的监听端口
listenPort=10911
10909:fastListenPort, 是 fastRemotingServer 服务组件使用,默认为 listenPort - 2,可以通过 broker.conf 配置文件修改。
#主要用于slave同步master
fastListenPort=10909
10912:haListenPort, 是HAService服务组件使用,用于Broker的主从同步,默认为listenPort + 1,可以通过配置文件修改。
#haService中使用
haListenPort=10912
防火墙开放端口
查看防火墙状态:
systemctl status firewalld
开放上述四个端口:
firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent
firewall-cmd --zone=public --add-port=10909/tcp --permanent
firewall-cmd --zone=public --add-port=10912/tcp --permanent
重启防火墙:
firewall-cmd --reload
查看防火墙所有开放的端口
firewall-cmd --list-port
服务器安全组开放端口
除了防火墙开放端口之外,服务器安全组也要设置上述四个端口对外开放,我用的是华为的云服务器,在安全组里添加入方向规则,规则填写上述四个端口。
3、搭建可视化控制台
前面 NameServer 和 Broker 搭建完成之后,就可以用来收发消息了,但是为了更加直观,可以搭建对应的服务控制台。
3.1、下载
下载地址:https://github.com/apache/rocketmq-dashboard/releases/tag/rocketmq-dashboard-1.0.0
Github 界面如下,点击下载压缩包或直接 clone :
3.2、修改配置文件
IDEA 打开刚解压的资源,修改配置文件:
修改 localhost 为自己的 Linux 服务器公网 IP 地址。
3.3、运行 jar 包
完善 pom.xml 下 node 资源下载:
<configuration>
<nodeDownloadRoot>https://cdn.npmmirror.com/binaries/node/</nodeDownloadRoot>
<nodeVersion>v16.2.0</nodeVersion>
<yarnVersion>v1.22.10</yarnVersion>
</configuration>
删掉 frontend-maven-plugin 相关插件:
执行 maven 打包命令:
mvn clean package -Dmaven.test.skip=true
打包完成后执行 jar 包,命令如下:
java -jar target/rocketmq-dashboard-1.0.0.jar
我的 jar 包是在本地运行的,所以直接访问 localhost:8080
,而如果把 jar 包部署在 Linux 服务器上的,就访问http://Linux服务器ip:8080
。
访问界面如下:
3.4、Chrome topic 查询踩坑
原本我是非常信任 chrome 浏览器的,但是在使用控制台的 topic 查询时出现了组件的兼容性问题,导致无法触发查询,所以这次我要给它个差评。
chrome 踩坑版本如下:
在消息的查询页面,选择 TOPIC 选项,下拉选择主题及选择时间,然后点击搜索按钮,F12 打开调试窗口,可以发现没有办法进行接口调用。
这个坑非常的隐蔽,因为 MESSAGE KEY 和 MESSAGE ID 两种查询的搜索组件是能正常使用的,所以没有第一时间想到是组件兼容性问题。
我试过采用旧版本的 dashboard(2017版本),也试过下调 RocketMQ 版本(4.9.6 -> 4.7.1),又翻遍了 github 的 issue, 都没能解决这个查询问题,最后实在没办法 F12 打开调试窗口想要排查具体调用的接口,万万没想到根本就没有进行调用,顿时一阵心累。
然后我用 Edge 浏览器执行同样的 topic 查询,搜索组件能正常调用接口:
所以这里不建议用 Chrome 访问控制台了。
到这里基本的 RocketMQ 环境搭建完毕。关于如何搭配 SpringBoot 使用下个章节进行演示。
参考资料:
- https://zhuanlan.zhihu.com/p/343227137
- https://juejin.cn/post/7134227366481494046?searchId=202308141456143A780CB39001D4154695
- https://rocketmq.apache.org/zh/docs/4.x/introduction/02quickstart/
- https://blog.csdn.net/changqing5818/article/details/113973803
- https://github.com/apache/rocketmq-dashboard
- https://developer.aliyun.com/article/788183
- https://blog.csdn.net/qq_29116427/article/details/130889508
RocketMQ 系列(二) 环境搭建的更多相关文章
- 使用 robotframework 自动化测试系列 二 -----环境搭建
环境搭建是测试人员基础,本质都是不难的,按照流程和步骤一步步做,遇到问题不要担心,解决的问题越多,你理解的也就越多. 1. 安装python环境,python现在有python2 和python3.由 ...
- 1、 小白带你入坑xamarin系列之环境搭建和准备
重点提示 由于xamarin发展更新很快 目前教程部分内容已经过时 请注意下载最新版本 2018.05.23 www.xamarin.com 1. 小白带你入坑xamarin系列之环境搭建和准备 ...
- 从零开始学Xamarin.Forms(二) 环境搭建、创建项目
原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建: 1.下载并安装jdk.Android SDK和NDK,当然还需要 VS2013 ...
- rocketmq 集群环境搭建配置
rocketmq环境搭建配置: 一. 搭建三主集群,环境:centos-64 7.4 + RocketMQ-4.3.2 Master01: 192.168.102.68 Master02: 192 ...
- PHP Laravel系列之环境搭建( VirtualBox+Vagrant+Homestead+系列网址)
搭建环境从来都是阻挡一门新技能的最致命的硬伤,为了这个环境,我又是花费了半天的时间,各种问题层出不穷,下面基于网上的一些教程(我看到的都多少有些问题) 开始的时候是在实验楼这个平台上开始学习的,不过 ...
- Selenium+Python系列 - 开发环境搭建
一.写在前面 我从未想过自己会写python系列的自动化文章,有些同学会问,那你现在为什么又开始写了? 不止一个人找过我,问我可以写一些Python自动化的文章吗,答案是肯定的. 笔者Java党,整P ...
- 「译」JUnit 5 系列:环境搭建
原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...
- 从零開始学Xamarin.Forms(二) 环境搭建、创建项目
一.环境搭建 Windows下环境搭建: 1.下载并安装jdk.Android SDK和NDK.当然还须要 VS2013 update 2(VS2010.VS2012均可)以上. a. 最新 ...
- RocketMQ之三:RocketMQ集群环境搭建
1.初步理解Producer/Consumer Group 在安装RocketMQ之前我们先来理解Group概念,在RocketMQ中Group是很重要的.通过Group机制,让RocketMQ天然的 ...
- Dubbo 源码分析系列之一环境搭建
环境搭建的步骤有哪些 依赖外部的环境 使用的开发工具 源码的拉取 结构大致介绍 1 依赖的外部环境 安装JDK 安装Git 安装maven 这边我们就不介绍怎么安装这些外部环境了,大家自行从安装这些外 ...
随机推荐
- React-hooks 父组件通过ref获取子组件数据和方法
我们知道,对于子组件或者节点,如果是class类,存在实例,可以通过 React.createRef() 挂载到节点或者组件上,然后通过 this 获取到该节点或组件. class RefTest e ...
- 2019年蓝桥杯C/C++大学B组省赛真题(等差数列)
题目描述: 数学老师给小明出了一道等差数列求和的题目.但是粗心的小明忘记了一部分的数列,只记得其中N 个整数. 现在给出这N 个整数,小明想知道包含这N 个整数的最短的等差数列有几项? 输入格式 输入 ...
- linux nfs共享存储服务
目录 一.nfs服务 二.nfs优点 三.配置文件 四.共享文件配置过程 五.实验 1.创建共享文件(两台终端共享) 一.nfs服务 概念:网络上共享文件系统的协议,运行多个服务器之间通过网络共享文件 ...
- Net 如何获取私有属性
.Net的私有属性.成员变量.方法,都可以通过反射获取调用,当然正常我们不会这么操作 此章只是做一个反射科普,像EFCore从数据库取值的底层框架就是通过反射直接操作私有的成员变量,而不是方法. 直接 ...
- 小程序使用echarts 在一个页面打印多个饼图的坑
一.下载echarts微信版 下载地址:https://github.com/ecomfe/echarts-for-weixin 或者直接云盘下载 https://pan.baidu.com/s/1i ...
- 常用类API
常用类 API CalendarCalendar 线程不安全 ,不同步获得并设置日历字段值 Calendar 使用两个参数定义了特定于语言环境的 7 天制星期:星期的第一天和第一个星期中的最小一天(从 ...
- 【python基础】if语句-语法格式
if语句-语法格式 简单理解if语句之后,我们的if语句语法格式有多种,选择使用哪种取决于要测试的条件数 1.if结构 最简单的if语句只有一个条件测试和一个代码块 其语法格式: 假设想要指导一个学员 ...
- 项目小结:使用Docker迁移服务到离线服务器
前言 最近遇到的这个场景,需要把之前开发的一套系统迁移到一个离线的服务器上,这个服务器有点麻烦,接入VPN后通过堡垒机才能访问,速度也很慢,遇到不少坑,本文记录一下迁移过程. 基本信息 原本这套系统也 ...
- 前端vue自定义table 表格 表格组件 Excel组件
快速实现vue uni-app自定义table 表格 表格组件 Excel组件,扩充性好,可切换四宫格 九宫格 十二宫格; 下载完整代码请访问uni-app插件市场地址:https://ext.dcl ...
- Java批量操作Excel文件实践
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 | 问题背景 在操作Excel的场景中,通常会有一些针对 ...