当前位置: 首页 > news >正文

MQ, RocketMQ, 安装

文章说明

本文主要说明RocketMQ的几种常见的安装方式。之前在工作中也用过RocketMQ,但是一直用的是测试环境上的,也没有自己动手安装过。这次专门抽了时间学习了一下。

文章目录

    • 文章说明
    • 参考文献
    • 安装
      • windows安装
        • 环境要求
        • 下载
        • 配置环境变量
        • 启动
        • 注意事项
      • Linux安装
        • 环境要求
        • 启动
        • 注意事项
      • 源码安装与调试
        • 下载
        • 环境要求
        • IntelliJ IDEA导入
        • 启动RocketMQ源码
          • 启动NameServer
          • 启动Broker

参考文献

本文内容主要来源于马士兵李瑾老师的视频教程(RocketMQ基础实战版),结合了老师的笔记以及根据自己的实践做了一些修改。

安装

windows安装

环境要求

已安装JDK1.8+(64位)

下载

下载链接:https://archive.apache.org/dist/rocketmq/ ,本文下载的是4.9.7

解压运行版本(Binary),确保已经安装好了JDK1.8

解压后的目录如下:
在这里插入图片描述

配置环境变量

变量名:ROCKETMQ_HOME

变量值:MQ解压路径\MQ文件夹名
在这里插入图片描述

启动

在RocketMQ的架构中,都是需要先启动NameServer再启动Broker的。所以先启动NameServer。

启动NameServer

使用cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqnamesrv.cmd’,启动NameServer。成功后会弹出提示框,此框勿关闭。
在这里插入图片描述
启动Broker

使用cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’,启动Broker。成功后会弹出提示框,此框勿关闭。
在这里插入图片描述

注意事项

内存不足的处理方式

RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小。

编辑‘MQ文件夹\bin’下的runbroker.cmd和runserver. cmd修改默认JVM大小(Linux上对应同名sh文件)

runbroker.cmd --broker的配置

runserver. cmd --nameServer的配置

例如:配置以下参数将RocketMQ的启动JVM的 堆空间内存控制在512m,新生代控制 在256m。元空间初始128m,最大320m。
在这里插入图片描述
修改RocketMQ的存储路径

rocketmq取的默认路径是user.home路径,也就是用户的根目录,一般存储放在跟路径下的 /store目录。
在这里插入图片描述
源码中可以得到验证,如下图:
在这里插入图片描述
所以这里会有一个问题,RocketMQ很容易导致C盘空间不够,在使用过程中,创建一个主题默认就是要创建1G的文件,很可能会导致出问题。

所以在windows上容易导致C盘空间吃满。

解决方式有两种:

1、修改源码,比如:全局替换user.home参数为mq.store,然后重新打包

2、使用源码方式启动,源码启动时通过参数设置指定存储位置

Linux安装

环境要求

64bit Linux、64bit JDK 1.8+、4g+磁盘空间,以及3G以上内存。
本文是在Vmware虚拟机的CentOS7.9中安装的。在虚拟机中安装CentOS的步骤请自行百度。
配置地址时,使用的是主机名而不是IP,请在hosts文件中配置好。

启动

在RocketMQ的架构中,都是需要先启动NameServer再启动Broker的。所以先启动NameServer。

  • 启动NameServer

进入至‘MQ文件夹\bin’下,然后执行‘nohup sh mqnamesrv &’,启动NAMESERVER。

查看日志的命令:tail -f ~/logs/rocketmqlogs/namesrv.log
在这里插入图片描述

  • 启动Broker

进入至‘MQ文件夹\bin’下,启动BROKER。

首次启动需要修改配置文件,增加外部访问地址,例如:conf/broker.conf

brokerIP1=dev-study

启动命令如下:

nohup sh mqbroker -c …/conf/broker.conf -n dev-study:9876 autoCreateTopicEnable=true &

这样启动的服务器客户端可以自动创建主题。

查看日志的命令:tail -100f ~/logs/rocketmqlogs/broker.log

2023-07-20 23:05:07 INFO main - Try to start service thread:FlushRealTimeService started:false lastThread:null
2023-07-20 23:05:07 INFO main - Try to start service thread:FlushDiskWatcher started:false lastThread:null
2023-07-20 23:05:07 INFO main - Try to start service thread:StoreStatsService started:false lastThread:null
2023-07-20 23:05:07 INFO main - Try to start service thread:FileWatchService started:false lastThread:null
2023-07-20 23:05:07 INFO FileWatchService - FileWatchService service started
2023-07-20 23:05:07 INFO main - Try to start service thread:PullRequestHoldService started:false lastThread:null
2023-07-20 23:05:07 INFO PullRequestHoldService - PullRequestHoldService service started
2023-07-20 23:05:07 INFO main - Try to start service thread:TransactionalMessageCheckService started:false lastThread:null
2023-07-20 23:05:07 INFO brokerOutApi_thread_1 - register broker[0]to name server dev-study:9876 OK
2023-07-20 23:05:07 INFO main - The broker[broker-a, dev-study:10911] boot success. serializeType=JSON and name server is dev-study:9876
2023-07-20 23:05:17 INFO BrokerControllerScheduledThread1 - dispatch behind commit log 0 bytes
2023-07-20 23:05:17 INFO BrokerControllerScheduledThread1 - Slave fall behind master: 0 bytes
2023-07-20 23:05:17 INFO brokerOutApi_thread_2 - register broker[0]to name server dev-study:9876 OK
2023-07-20 23:05:47 INFO brokerOutApi_thread_3 - register broker[0]to name server dev-study:9876 OK
2023-07-20 23:06:17 INFO BrokerControllerScheduledThread1 - dispatch behind commit log 0 bytes
2023-07-20 23:06:17 INFO BrokerControllerScheduledThread1 - Slave fall behind master: 0 bytes
2023-07-20 23:06:17 INFO brokerOutApi_thread_4 - register broker[0]to name server dev-study:9876 OK

注意事项

RocketMQ需要开通的端口如下:

  • rocketMQ自身占用9876

  • 非vip通道端口:10911

  • vip通道端口:10909 (只针对producer 而且4.5以后已经默认不开启了)

VIP通道其实就是多监听一个端口用于接受处理消息,因为默认端口通道可能很多在用,为了防止某些很重要的业务堵塞,就再开一个端口处理。这对于老版本的 RocketMQ 有消息接收队列的时候,作用可能大一点,对于目前的 RocketMQ 的设计,作用没那么大了。所以,这个默认就不开启了,留着只是为了兼容老版本。

  1. 其他:

记得Linux上修改文件权限:命令如下:chmod -R 777 /home/linux

RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小。(但是这个也仅仅是在测试环境中,RocketMQ在生产上最低要求至少8G内存<官方推荐>才能确保RocketMQ的效果)

编辑runbroker.sh和runserver.sh修改默认JVM大小(windows上对应cmd文件)

vi runbroker.sh --broker的配置

vi runserver.sh --nameServer的配置

choose_gc_log_directoryJAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"
choose_gc_options
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=2g"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

源码安装与调试

下载

https://archive.apache.org/dist/rocketmq/4.9.7/ 本文下载的版本:rocketmq-all-4.9.7-source-release.zip

环境要求

  • JDK1.8(64位)

  • Maven 3.2.x+,已经配置好阿里云仓库

IntelliJ IDEA导入

依次点击:File>Open,然后选中已经解压好的源代码路径。

载入后,确认Maven的路径是否正确,载入成功之后的图:

在这里插入图片描述
执行mvn install -Dmaven.test.skip=true命令,可以在右侧的Maven页签中双击,同时勾选Skip Test。
在这里插入图片描述

启动RocketMQ源码

启动NameServer

找到NameServer的启动类NamesrvStartup,然后点绿色箭头然后点Modify Run Configuration。

将ROCKETMQ_HOME加入到IDEA的环境变量中,同时在这个目录中创建conf、logs、store三个文件夹
在这里插入图片描述
从源码目录中的distribution目录下,将broker.conf、logback_broker.xml、logback_namesrv.xml复制到conf目录中
在这里插入图片描述
此时就可以通过启动类NamesrvStartup启动NameServer了。看到如下日志代表启动成功

D:\ProgramFiles\Java\jdk1.8.0_351\bin\java.exe " …
The Name Server boot success. serializeType=JSON

启动Broker

找到broker模块,同时找到启动类BrokerStartup.java,编辑启动参数

同NameServer,将ROCKETMQ_HOME加入到IDEA的环境变量中,在project argument中加入broker.conf文件地址。例如:-c xxx\broker.conf
在这里插入图片描述
然后通过启动类启动broker,成功的话会看到如下日志打印

The broker[broker-a, 192.168.3.129:10911] boot success. serializeType=JSON

相关文章:

MQ, RocketMQ, 安装

文章说明 本文主要说明RocketMQ的几种常见的安装方式。之前在工作中也用过RocketMQ&#xff0c;但是一直用的是测试环境上的&#xff0c;也没有自己动手安装过。这次专门抽了时间学习了一下。 文章目录 文章说明参考文献安装windows安装环境要求下载配置环境变量启动注意事项 …...

Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集

Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集 前言相关介绍COCO格式实例分割数据集转换为YOLO格式实例分割数据集coco格式对应的json文件&#xff0c;以test.json为例格式转换代码&#xff0c;内容如下 前言 由于本人水平有限&#xff0c;难免出现错漏&#xf…...

借助 Mybatis 的动态 SQL 解决传参不确定问题

在上一篇的&#xff1a;Mybatis 操作数据库的基本 CRUD 以及查询操作详析_糊糊涂涂的博客-CSDN博客中介绍了Mybatis使用固定SQL语句操作数据&#xff0c;本篇介绍 Mybatis 一个强大的特性&#xff1a;动态SQL。 动态 SQL 解决什么问题&#xff1f; 那当我们要执行的业务逻辑有…...

前端框架学习-Vue(一)

Vue简介 百度百科上关于vue的词条&#xff0c;说vue时一款渐进式JavaScript框架&#xff0c; 简单来说,渐进式是一种设计理念,即在不失去当前功能的前提下,逐步添加新的特性。 说明它时一直在进行维护的。 Vue3&#xff0c;中使用*.vue作为文件后缀&#xff0c;html&#xff0c…...

Elasticsearch Query DSL

Elasticsearch Query DSL 这里使用的 Elasticsearch 的版本为 7.12.1。 1、基本概念 1.1 文档(Document) ElasticSearch 是面向文档的&#xff0c;文档是所有可搜索数据的最小单位&#xff0c;例如 MySQL 的一条数据记录。 文档会被序列化成为 json 格式&#xff0c;保存在…...

腾讯云 CODING × K+ 峰会再次携手开启软件行业新风向

点击链接了解详情 近日&#xff0c;K 全球软件研发行业创新峰会在北京成功举办。腾讯云 CODING 作为云原生工具领跑者受邀参与此次峰会。会议现场&#xff0c;展台打卡火爆、演讲干货满满&#xff0c;为观众带来高质量的行业内容。 腾讯云全链路高效 开发上云实践‍ 技术创新…...

2023年发布的25个开源大型语言模型总结

大型语言模型(llm)是一种人工智能(AI)&#xff0c;在大量文本和代码数据集上进行训练。它们可以用于各种任务&#xff0c;包括生成文本、翻译语言和编写不同类型的创意内容。 今年开始&#xff0c;人们对开源LLM越来越感兴趣。这些模型是在开源许可下发布的&#xff0c;这意味…...

Istio网关Gateway 启用TLS

Istio网关Gateway概述 Istio网关Gateway是一个负责处理南北向流量的组件&#xff0c;它通常会暴露服务网格内部的服务&#xff0c;以便外部的请求能够访问到服务网格中的服务。Istio网关Gateway支持多种协议&#xff0c;包括HTTP、HTTPS和GRPC等。 在Istio网关Gateway中&#…...

slam建图与定位_cartographer代码阅读(7)后端约束构建

1.cartographer里的节点:当扫描匹配结束后&#xff0c;有新的一帧scan加入到submap中&#xff0c;这个扫描匹配的结果就叫做节点 global_trajectory_builder.cc // 将匹配后的结果 当做节点 加入到位姿图中auto node_id pose_graph_->AddNode(matching_result->insertio…...

Android usb 配件模式通信示例

当使用 Android 设备作为 USB 配件时&#xff0c;可以使用 Android 提供的 USB Accessory API 来进行 USB 通信。以下是一个简单的 Android USB 配件模式的通信例子。在本例中&#xff0c;我们将接收连接到 Android 设备的 USB 主机发送的数据并向 USB 主机发送响应。 首先&am…...

【Hive实战】Hive的压缩池与锁

文章目录 Hive的压缩池池的分配策略自动分配手动分配隐式分配 池的等待超时Labeled worker pools 标记的工作线程&#xff08;自定义线程池&#xff09;Default pool 默认池Worker allocation 工作线程的分配 锁Turn Off ConcurrencyDebuggingConfigurationhive.support.concur…...

【VUE】使用elementUI tree组件根据所选id自动回显

需求如下&#xff1a; 1.点击父级节点 将父级节点下children中所有id放入数组 2.点击父级下的子节点 将点击的子节点放入数组 3.取消选择父节点&#xff0c;将放入数组的所有子节点id删除 4.根据选择的子节点数组&#xff0c;匹配他所属的父节点 <el-tree:data"tre…...

RocketMQ, Dashboard, 控制台安装

文章说明 本文主要说明RocketMQ的控制台&#xff08;Dashboard&#xff09;的安装过程。工作中一直用的是别人装好的&#xff0c;这次终于自己亲手装了一遍。 由于每次都要启动三个应用&#xff0c;比较烦&#xff0c;于是我写了一键启动脚本&#xff0c;分享给大家。这个脚本…...

chrome解决http自动跳转https问题

1.地址栏输入&#xff1a; chrome://net-internals/#hsts 2.找到底部Delete domain security policies一栏&#xff0c;输入想处理的域名&#xff0c;点击delete。 3.再次访问http域名不再自动跳转https了。...

FastGithub 下载

Releases dotnetcore/FastGithub GitHub 无需安装&#xff0c;双击UI程序即可运行。...

TSINGSEE青犀视频安防监控管理平台EasyNVR如何配置鉴权?

视频监控汇聚平台EasyNVR是基于RTSP/Onvif协议的视频平台&#xff0c;可支持将接入的视频流进行全平台、全终端的分发&#xff0c;分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。为了满足用户的集成与二次开发需求&#xff0c;我们也提供了丰富的API接口供…...

unittest 数据驱动DDT应用

前言 一般进行接口测试时&#xff0c;每个接口的传参都不止一种情况&#xff0c;一般会考虑正向、逆向等多种组合。所以在测试一个接口时通常会编写多条case&#xff0c;而这些case除了传参不同外&#xff0c;其实并没什么区别。 这个时候就可以利用ddt来管理测试数据&#xf…...

素数个数——数论

题目描述 求 1,2,⋯,N 中素数的个数。 输入格式 一行一个整数 N。 输出格式 一行一个整数&#xff0c;表示素数的个数。 样例 #1 样例输入 #1 10样例输出 #1 4提示 对于 100% 的数据&#xff0c;1≤1081≤N≤108。 本题时间限制在2秒以内。 因为题目时间限制是2秒&#xff0c;所…...

express编写一个简单的get接口

/01编写get接口.jsconst express require(express) const app express()// 创建路由 const useRouter require(./router/user.js) // 注册路由 app.use(/api,useRouter)app.listen(8080, (req, res) > {console.log(8080监听) }) ./02编写post接口 // 注意&#xff1a;如…...

【力扣刷题C++】环形链表

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/linked-list-cycle 著作权归领扣网络所有。商业转载请联系官方授权&#xff0c;非商业转载请注明出处。 【题目】给你一个链表的头节点 head &#xff0c;判断链表中是否有…...

GitHub功能全景:从代码创作到企业级方案的技术生态

【导语&#xff1a;GitHub作为全球知名的代码托管平台&#xff0c;提供了丰富多样的功能&#xff0c;涵盖AI代码创作、开发者工作流、应用程序安全等多个领域&#xff0c;还针对不同规模公司、用例和行业提供解决方案&#xff0c;对软件开发行业产生着深远影响。】【GitHub的多…...

3步革新Windows任务栏:TranslucentTB打造个性化桌面体验

3步革新Windows任务栏&#xff1a;TranslucentTB打造个性化桌面体验 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 在视觉主导的数字时代…...

别再只用官方节点了!手把手教你安装n8n社区节点,解锁隐藏工作流能力

解锁n8n隐藏潜能&#xff1a;社区节点深度应用指南 你是否曾在n8n中构建工作流时&#xff0c;发现官方节点无法满足某些特定需求&#xff1f;比如需要更复杂的文本处理、社交媒体深度集成&#xff0c;或是与某些小众API对接&#xff1f;这正是社区节点大显身手的时刻。作为n8n生…...

OpenClaw创始人加入OpenAI:这不是跳槽新闻,是整个AI行业换挡的信号

OpenClaw创始人加入OpenAI&#xff1a;这不是跳槽新闻&#xff0c;是整个AI行业换挡的信号摘要OpenClaw创始人Peter Steinberger正式加入OpenAI&#xff0c;项目移交开源基金会。Sam Altman亲自官宣&#xff0c;称他是"天才"。这件事的真正意义不在人事变动&#xff…...

Java 26 FFM API进阶:零JNI调用TensorRT/OpenVINO,AI端到端延迟砍半

文章目录一、JNI&#xff0c;AI时代的"文言文写作"二、FFM API&#xff1a;Java调用原生代码的"现代白话文"1. Arena&#xff1a;比try-with-resources还狠的内存管理2. Linker&#xff1a;C函数的"Java身份证"3. jextract&#xff1a;头文件自动…...

Vivado 2020.2实战:XDMA IP核配置全解析(含PCIe 2.0速率计算避坑指南)

Vivado 2020.2实战&#xff1a;XDMA IP核配置全解析&#xff08;含PCIe 2.0速率计算避坑指南&#xff09; 在FPGA与主机间的高速数据交互场景中&#xff0c;PCIe协议凭借其高带宽和低延迟特性成为首选方案。Xilinx提供的XDMA IP核作为PCIe与AXI总线的桥梁&#xff0c;其配置过程…...

保姆级避坑指南:在CentOS 7上手动部署MySQL 8.0二进制包(附systemd服务配置)

CentOS 7手动部署MySQL 8.0二进制包的深度避坑指南 在Linux服务器上手动部署MySQL数据库是每个运维工程师的必修课。不同于常见的yum或apt安装方式&#xff0c;二进制包部署能让你更深入地理解MySQL的运行机制&#xff0c;同时获得更灵活的控制权。但这条路并不平坦&#xff0c…...

CTFshow Misc挑战:从WinRAR到明文攻击的实战解析

1. 初识CTFshow Misc挑战&#xff1a;压缩包破解的奥秘 第一次接触CTFshow的Misc题目时&#xff0c;我被那个看似普通的压缩包难住了整整两天。那是个名为6.zip的文件&#xff0c;用360解压提示需要密码&#xff0c;这种场景在CTF比赛中实在太常见了。很多新手遇到这种情况会直…...

Pixel Epic · Wisdom Terminal保姆级教程:备份与恢复研报工程文件全指南

Pixel Epic Wisdom Terminal保姆级教程&#xff1a;备份与恢复研报工程文件全指南 1. 引言&#xff1a;为什么需要备份研报工程文件 在Pixel Epic Wisdom Terminal中&#xff0c;每一份研究报告都是你与AI贤者共同创造的智慧结晶。就像RPG游戏中的存档点一样&#xff0c;定…...

PyTorch 2.8镜像快速部署:5分钟验证torch.cuda.is_available()并启动API服务

PyTorch 2.8镜像快速部署&#xff1a;5分钟验证torch.cuda.is_available()并启动API服务 1. 镜像概述与环境准备 PyTorch 2.8深度学习镜像是一个开箱即用的高性能计算环境&#xff0c;专为现代AI工作负载优化。这个预配置环境能让你跳过繁琐的安装过程&#xff0c;直接进入模…...