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

同理修改 BrokerNameServer类似,编辑 JVM 参数并启动。

编辑 runbroker.sh

vim bin/runbroker.sh

要修改的就是下图位置:

参考 JVM 参数设置
 -server -Xms256m -Xmx256m -Xmn128m

保存并退出 vim 编辑。

修改 Broker 配置文件

Broker需要向NameServer注册,所以还需要指定NameServer的地址。

因为NameServerBroker 在同一台机器,所以是 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、测试

启动完NameServerBroker,可以进行简单的测试。

首先设置环境变量

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

关闭NameServerBroker的命令如下:

# 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 使用下个章节进行演示。

参考资料:

RocketMQ 系列(二) 环境搭建的更多相关文章

  1. 使用 robotframework 自动化测试系列 二 -----环境搭建

    环境搭建是测试人员基础,本质都是不难的,按照流程和步骤一步步做,遇到问题不要担心,解决的问题越多,你理解的也就越多. 1. 安装python环境,python现在有python2 和python3.由 ...

  2. 1、 小白带你入坑xamarin系列之环境搭建和准备

    重点提示 由于xamarin发展更新很快 目前教程部分内容已经过时 请注意下载最新版本   2018.05.23 www.xamarin.com 1. 小白带你入坑xamarin系列之环境搭建和准备 ...

  3. 从零开始学Xamarin.Forms(二) 环境搭建、创建项目

    原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建:     1.下载并安装jdk.Android SDK和NDK,当然还需要 VS2013 ...

  4. rocketmq 集群环境搭建配置

    rocketmq环境搭建配置: 一.   搭建三主集群,环境:centos-64 7.4 + RocketMQ-4.3.2 Master01: 192.168.102.68 Master02: 192 ...

  5. PHP Laravel系列之环境搭建( VirtualBox+Vagrant+Homestead+系列网址)

    搭建环境从来都是阻挡一门新技能的最致命的硬伤,为了这个环境,我又是花费了半天的时间,各种问题层出不穷,下面基于网上的一些教程(我看到的都多少有些问题) 开始的时候是在实验楼这个平台上开始学习的,不过 ...

  6. Selenium+Python系列 - 开发环境搭建

    一.写在前面 我从未想过自己会写python系列的自动化文章,有些同学会问,那你现在为什么又开始写了? 不止一个人找过我,问我可以写一些Python自动化的文章吗,答案是肯定的. 笔者Java党,整P ...

  7. 「译」JUnit 5 系列:环境搭建

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...

  8. 从零開始学Xamarin.Forms(二) 环境搭建、创建项目

    一.环境搭建 Windows下环境搭建:     1.下载并安装jdk.Android SDK和NDK.当然还须要 VS2013 update 2(VS2010.VS2012均可)以上. a.  最新 ...

  9. RocketMQ之三:RocketMQ集群环境搭建

    1.初步理解Producer/Consumer Group 在安装RocketMQ之前我们先来理解Group概念,在RocketMQ中Group是很重要的.通过Group机制,让RocketMQ天然的 ...

  10. Dubbo 源码分析系列之一环境搭建

    环境搭建的步骤有哪些 依赖外部的环境 使用的开发工具 源码的拉取 结构大致介绍 1 依赖的外部环境 安装JDK 安装Git 安装maven 这边我们就不介绍怎么安装这些外部环境了,大家自行从安装这些外 ...

随机推荐

  1. 图数据库 NebulaGraph 的内存管理实践之 Memory Tracker

    数据库的内存管理是数据库内核设计中的重要模块,内存的可度量.可管控是数据库稳定性的重要保障.同样的,内存管理对图数据库 NebulaGraph 也至关重要. 图数据库的多度关联查询特性,往往使图数据库 ...

  2. 计蒜客蓝桥杯省赛模拟G

    题目 一天蒜头君得到 n 个字符串 si,每个字符串的长度都不超过 1010. 蒜头君在想,在这 n 个字符串中,以 si 为后缀的字符串有多少个呢? 输入格式 第一行输入一个整数 n. 接下来 n ...

  3. 【汇编】DOS系统功能调用(INT 21H)

    前言 最近又听了听汇编的课程,发现代码里的MOV xxxxx INT 21H,老师都是一句话带过,而不讲讲其中的原因(也可能前面讲了我没有听QAQ). 顺便夸一下老师,老师懒省事录的视频画质已经成功从 ...

  4. SpringCloud+Eureka初识+Ribbon+Feign+Hystrix(服务熔断,服务降级)+hashbroad

    ​Eureka注册中心 1.导包 <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework ...

  5. 前端自动识别CAD图纸提取信息方法总结

    前言 CAD图纸自动识别和提取信息具有许多意义,包括以下几个方面: 提高工作效率:传统上,对于大量的CAD图纸,人工识别和提取信息是一项耗时且繁琐的任务.通过自动化这一过程,可以大大提高工作效率,节省 ...

  6. 为teamcity的代码语法检查工具pyflakes增加支持python2和python3

    TeamCity和pyflakes TeamCity是一款由JetBrains公司开发的持续集成和部署工具,它提供了丰富的功能来帮助团队协作进行软件开发.其中包括代码检查.自动化构建.测试运行.版本控 ...

  7. 前端八股文everybody准备好了没

    引言 由于最近比较忙活没时间学习新东西,现在得空想着能不能好好整理出一些有用的东西,让记忆深刻一点,免得到时候实习找工作面试的时候一问三不知,也希望大家能指正出错误和对大家有点帮助,一起进步,加油奥里 ...

  8. 【保姆级教学】抓包工具Wireshark使用教程

    wireshark介绍 今天讲一下另一款底层抓包软件,之前写过两篇抓包软件 分别是 fiddler抓包[https://www.cnblogs.com/zichliang/p/16067941.htm ...

  9. 3. AOP

    1. 代理模式 1.1 概念 ① 介绍 二十三种设计模式中的一种,属于结构型模式.它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用.让不 ...

  10. Pinot2的无人机传感器和摄像头

    目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 无人机传感器和摄像头在Pinot 2中得到广泛应用,其目的是为Pinot 2提供全面的传感器和 ...