当前位置: 首页 > 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;判断链表中是否有…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件&#xff0c;主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理&#xff1a; 一、超载保护装置&#xff08;核心安全装置&#xff09; 1. 起重量限制器 功能&#xff1a;实时监测起升载荷&a…...