rocketmq如何修改存储路径

一、下载rocketmq对应版本源码

修改消息存储路径需要修改rocketmq源码,因为rocketmq取的默认路径是user.home路径,也就是用户的根目录,如下所示

直接修改用户的user.home比较麻烦,我们打算直接修改源码里写死的路径,然后重新打包

下载rocketmq源码可以去GitHub,路径为https://github.com/apache/rocketmq

如果要下4.7.1版本的源码包可以选择对应release包

例如使用的rocketmq版本为4.7.1,则下载路径为https://github.com/apache/rocketmq/tree/release-4.7.1

二、全局替换user.home参数为mq.store

我们用自定义参数mq.store代替默认的user.home,全局替换user.home为mq.store

三、重新打包

注意打包时要排除单元测试, 在源码根目录执行 mvn install -DskipTests

四、替换掉旧的jar包

打包完成后根据rocketmq运行需要替换对应的jar包,找到ROCKETMQ_HOME\lib目录,搜索rocket

根据这里的jar包名称,去刚刚打包好的项目源码目录去搜索,然后用打包好的新jar包替换掉原本的jar包,总共13个jar包需要替换,有些可能不需要替换,但是我没有仔细去排查,全部替换掉了,反正源码编译后和原来的一样

五、java启动参数新增mq.store

在项目里我们用mq.store替换掉了user.home,我们需要在启动参数里加入mq.store参数,以用于使用自定义的目录存储消息和日志

在rocketmq的bin目录下,找到并修改runbroker.cmd 和 runserver.cmd,如果是linux系统下使用,修改对应的.sh文件即可

六、修改日志文件路径

修改日志存放路径,需要修改如下文件,位于rocketmq的conf文件夹下

修改方式一样,都是在logback文件的<configuration>节点里新增<properties>节点,在节点里配置rocketmq统一的日志存放路径,例如上文配置的是 D:\RocketMQ目录,

这里配置为

<property name="MQ_STORE" value="D:\RocketMQ" />

然后替换文件内所有的user.home,为MQ_STORE

<configuration>
 <property name="MQ_STORE" value="D:\RocketMQ" />
    <appender name="DefaultAppender"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${MQ_STORE}/rocketmqlogs/broker_default.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${MQ_STORE}/rocketmqlogs/otherdays/broker_default.%i.log.gz</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>10</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <appender name="RocketmqBrokerAppender_inner"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${MQ_STORE}/rocketmqlogs/broker.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${MQ_STORE}/rocketmqlogs/otherdays/broker.%i.log.gz</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>128MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>
    <appender name="RocketmqBrokerAppender" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="RocketmqBrokerAppender_inner"/>
    </appender>

	......

七、编写一键启动文件

新建文本文件 start-rocketmq,修改后缀为.bat,内容如下,先后启动nameserver 和 broker

start mqnamesrv.cmd
start mqbroker.cmd -c ../conf/broker.conf namesrvAddr=127.0.0.1:9876 brokerIP1=127.0.0.1 autoCreateTopicEnable=true &

八、启动验证

记得如果要外部访问,上面的IP要改成局域网的ip,另外要对外开放 9876 10909 10911端口

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • RocketMQ消息过滤与查询的实现

    消息过滤 RocketMQ分布式消息队列的消息过滤方式有别于其它MQ中间件,是在Consumer端订阅消息时再做消息过滤的. RocketMQ这么做是还是在于其Producer端写入消息和Consomer端订阅消息采用分离存储的机制来实现的,Consumer端订阅消息是需要通过ConsumeQueue这个消息消费的逻辑队列拿到一个索引,然后再从CommitLog里面读取真正的消息实体内容,所以说到底也是还绕不开其存储结构. 其ConsumeQueue的存储结构如下,可以看到其中有8个字节存储的M

  • 使用RocketMQTemplate发送带tags的消息

    RocketMQTemplate发送带tags的消息 RocketMQTemplate是RocketMQ集成到Spring cloud之后提供的个方便发送消息的模板类,它是基本Spring 的消息机制实现的,对外只提供了Spring抽象出来的消息发送接口. 在单独使用RocketMQ的时候,发送消息使用的Message是'org.apache.rocketmq.common.message'包下面的Message,而使用RocketMQTemplate发送消息时,使用的Message是org.s

  • RocketMQ存储文件的实现

    RocketMQ存储路径默认是${ROCKRTMQ_HOME}/store,主要存储消息.主题对应的消息队列的索引等. 1.概述 查看其目录文件 commitlog:消息的存储目录 config:运行期间一些配置信息 consumequeue:消息消费队列存储目录 index:消息索引文件存储目录 abort:如果存在abort文件说明Broker非正常关闭,该文件默认启动时创建,正常退出时删除 checkpoint:文件检测点.存储commitlog文件最后一次刷盘时间戳.consumeque

  • 基于RocketMQ推拉模式详解

    消费者客户端有两种方式从消息中间件获取消息并消费.严格意义上来讲,RocketMQ并没有实现PUSH模式,而是对拉模式进行一层包装,名字虽然是 Push 开头,实际在实现时,使用 Pull 方式实现. 通过 Pull 不断轮询 Broker 获取消息.当不存在新消息时,Broker 会挂起请求,直到有新消息产生,取消挂起,返回新消息. 1.概述 1.1.PULL方式 由消费者客户端主动向消息中间件(MQ消息服务器代理)拉取消息:采用Pull方式,如何设置Pull消息的拉取频率需要重点去考虑,举个

  • 解决SpringBoot整合RocketMQ遇到的坑

    应用场景 在实现RocketMQ消费时,一般会用到@RocketMQMessageListener注解定义Group.Topic以及selectorExpression(数据过滤.选择的规则)为了能支持动态筛选数据,一般都会使用表达式,然后通过apollo或者cloud config进行动态切换. 引入依赖 <!-- RocketMq Spring Boot Starter--> <dependency> <groupId>org.apache.rocketmq<

  • RocketMQ-延迟消息的处理流程介绍

    概述 RocketMQ 支持发送延迟消息,但不支持任意时间的延迟消息的设置,仅支持内置预设值的延迟时间间隔的延迟消息: 预设值的延迟时间间隔为: 1s. 5s. 10s. 30s. 1m. 2m. 3m. 4m. 5m. 6m. 7m. 8m. 9m. 10m. 20m. 30m. 1h. 2h: 在消息创建的时候,调用 setDelayTimeLevel(int level) 方法设置延迟时间: broker在接收到延迟消息的时候会把对应延迟级别的消息先存储到对应的延迟队列中,等延迟消息时间到

  • RocketMQ 延时级别配置方式

    RocketMQ 支持定时消息,但是不支持任意时间精度,仅支持特定的 level,例如定时 5s, 10s, 1m 等. 其中,level=0 级表示不延时,level=1 表示 1 级延时,level=2 表示 2 级延时,以此类推. 如何配置: 在服务器端(rocketmq-broker端)的属性配置文件中加入以下行: messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 描述了各级别与延时时

  • rocketmq如何修改存储路径

    一.下载rocketmq对应版本源码 修改消息存储路径需要修改rocketmq源码,因为rocketmq取的默认路径是user.home路径,也就是用户的根目录,如下所示 直接修改用户的user.home比较麻烦,我们打算直接修改源码里写死的路径,然后重新打包 下载rocketmq源码可以去GitHub,路径为https://github.com/apache/rocketmq 如果要下4.7.1版本的源码包可以选择对应release包 例如使用的rocketmq版本为4.7.1,则下载路径为h

  • R语言修改下载安装包install.package的默认存储路径的操作方法

    这次遇到的问题是:R语言下载安装包时会先将下载下来的二进制zip文件保存在本地,然后将其解压安装到R的library文件夹下.包被下载后会默认将二进制zip文件保存在本地C盘的临时会话的downloaded_packages目录下,不希望保存在该目录下,想手动修改保存路径. 查找了一下方法,发现很多都让用.libPaths()或者lib参数来修改.这里说明一下.libPaths和lib参数的作用. libPaths {base} 文档中给出的说明大致意思就是这是一个获取或者设定R存放已经安装的包

  • docker 设置windows存储路径的操作

    在win10下安装docker时,选择container类型为Linux container之后,设置存储路径不能再通过修改daemon的graph值配置了,具体修改方式如下图: 第一步 点击setting进入设置页面 第二步 选择container共享目录,根据自己需要放在相应的驱动器上,然后apply,卡上几分钟就好了. 第三步 选择镜像存储地址,browse选择自己要存放的目录,然后apply,然后过几分钟后就好了 补充:win10下修改docker for windows的仓库路径 吐槽

  • RocketMQ特性Broker存储事务消息实现

    目录 引言 TransactionalMessageService 处理事务消息 第一处: 第二处: 引言 在Broker中,事务消息的初始化是通过BrokerController.initialTransaction()方法执行的. private void initialTransaction() { this.transactionalMessageService = ServiceProvider.loadClass(ServiceProvider.TRANSACTION_SERVICE

  • Android编程实现手机自带内部存储路径的获取方法

    本文实例讲述了Android编程实现手机自带内部存储路径的获取方法.分享给大家供大家参考,具体如下: 我有一台中兴的Android手机,型号是 ZTE U930HD,手机没有插入外置SD卡(也就是Micro SD Card,原名Trans-flash Card(TF卡),2004年正式更名为Micro SD Card),但是机身自带了一个内置存储卡(也就是eMMC存储,大小为2G). 我把这个手机用数据线插到电脑上,也会看到盘符,通过安装「R.E 管理器」等文件管理应用,也可以管理文件,并且能看

  • Ubuntu安装MySQL5.7并配置数据存储路径的方法步骤

    一.安装MySQL 本文是通过APT方式安装,安装的最新版本是5.7.21 (注意:通过APT方式安装的版本都是现在最新的版本,通过这种方式安装好之后开机自启动都已经配置好,和命令行上的环境变量,无需手动配置.) sudo apt-get install mysql-server 如果提示依赖不足,运行下面命令解决依赖问题,如果没出现依赖问题,那么就不需要使用此命令 sudo apt-get install -f 安装过程会提示输入两次root用户密码 说明:通过这种方式安装好之后开机自启动都已

  • vue-cli 3.x 修改dist路径的方法

    一些牢骚 前端的世界真的太奇妙,更新速度真的跟火箭一样.没有一颗真正热爱它的心,真的很难继续走下去.前段时间 Node 之父 Ryan Dahl 发布新的开源项目 deno,受到了大量的关注.Ryan Dahl直言node是一个失败品,充斥很多bug和设计上的不合理,导致他也无力回天.....天啦撸,可怜我们这种小前端,node还没开始,马上就要结束了.... 好的吧,牢骚归牢骚,生活还得继续.生命不息,撸码不止. webpack4 最近在一个项目中,将vue-cli更新到了最新版的3.x.同时

  • Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头

    一. 打印图片属性.设置图片存储路径 代码如下: #打印图片的属性.保存图片位置 import cv2 as cv import numpy as np #numpy是一个开源的Python科学计算库 def get_image_info(image): print(type(image)) #type() 函数如果只有第一个参数则返回对象的类型 在这里函数显示图片类型为 numpy类型的数组 print(image.shape) #图像矩阵的shape属性表示图像的大小,shape会返回tup

  • Rstudio 修改工作路径(三种方法总结)

    1.使用setwd()函数 作用:起到临时更改路径的作用,只对当前的Rstudio窗口有效.一旦窗口关闭,又会回到默认路径下.getwd()函数是获取当前路径的函数. 2.global options设置(如图所示) 首先在tools菜单栏下,点击global options选项 然后在default working directory 中可以修改默认工作路径,点browse修改工作路径 最后保存,重新打开Rstudio后工作路径就变成已修改的路径了. 3.通过启动代码设置 首先在Rstudio

  • spring cloud gateway 如何修改请求路径Path

    一.背景 项目升级改造,老项目使用请求url中特定参数进行服务路由,现使用gateway网关进行路由服务信息 二.根据参数信息修改请求路径Path @Component public class RequestFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpR

随机推荐