IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> RocketMQ源码如何在本地运行 -> 正文阅读

[Java知识库]RocketMQ源码如何在本地运行

一、背景

为什么要本地运行源码呢?前一段时间遇到一个问题,每次系统自动呼叫三方运力(美团、蜂鸟、达达之类)的时候,总是会重复呼叫两次;最后排查发现是RocketMQ Consumer消费超时,进而导致重复消费,昨天在复习RocketMQ的时候,很神奇的就深入到消费的核心逻辑里了…(这里的故事下篇文章见)。理完Broker和Consumer的源码后也得出了一些结论,但需要加点日志跑一跑源码,让结论不是盖棺而论;所以就有了今天的故事。

二、下载源码

源码地址:https://github.com/Saint9768/rocketmq/releases/tag/rocketmq-all-4.8.0;PS:带有注释的RocketMQ-4.8.0版本的源码。

官网源码在这:https://github.com/apache/rocketmq/archive/refs/tags/rocketmq-all-4.8.0.zip

源码导入到Idea中的整体目录结构,张这个样:
在这里插入图片描述
文件路径为:/Users/zhouxin/ideaWorkplace/rocketmq

三、添加日志并启动

1、添加日志

1)在哪里加日志?

我们知道NameServer的启动类是NamesrvStartup和Broker的启动类是BrokerStartup,分别看一下他们的main()方法:
(1)在NamesrvStartup#main()方法套娃的createNamesrvController()方法中可以看到有一个引入/conf/logback_namesrv.xml文件的操作:
在这里插入图片描述
(2)BrokerStartup#main()方法也一样:
在这里插入图片描述
上两图中有指定日志文件的地址,这里大家根据自己的源码项目所在项目位置自定义。

2)logback日志配置文件出处

先去官网下载个RocketMQ可执行程序:https://rocketmq.apache.org/dowloading/releases/

解压rocketmq-all-4.8.0-bin-release.zip文件,然后进入到./rocketmq-all-4.8.0-bin-release/conf目录下,可以看到logback_broker.xmllogback_namesrv.xml两个文件:
在这里插入图片描述
把它俩copy到我们源码的根目录下的conf文件夹中,即/Users/zhouxin/ideaWorkplace/rocketmq/conf目录下;

3)日志输出位置

logback_broker.xml中配置Broker日志文件的默认位置为:${user.home}/logs/rocketmqlogs/broker_default.log
在这里插入图片描述

在我本机user.home为/Users/zhouxin,所以日志文件的位置为:/Users/zhouxin/logs/rocketmqlogs/broker_default.log

同样的NameServer的日志文件位置为:${user.home}/logs/rocketmqlogs/namesrv_default_default.log

在这里插入图片描述

2、启动

先运行NameServer再运行Broker即可。

1)先启动namesrv

NameServer启动类:org.apache.rocketmq.namesrv.NamesrvStartup,进入直接运行main()方法即可;
运行的时候发现直接就停了,控制台输出如下:

Please set the ROCKETMQ_HOME variable in your environment to match the location of the RocketMQ installation

在这里插入图片描述
全局搜一下ROCKETMQ_HOME这个字符串,找到在NamesrvStartup中的位置:
在这里插入图片描述
原来我们设置RocketmqHome的位置不对,我们把它往上挪一挪;
在这里插入图片描述
再次启动,运行正常:
在这里插入图片描述

或者我们可以选择直接在Environment variables中配置ROCKETMQ_HOME:

在这里插入图片描述
也是一样的效果:
在这里插入图片描述

2)再启动Broker

启动之前我们先把代码中RocketmqHome的配置往上挪一挪(因为和上面我们启动NameServer的时候存在同样的ROCKETMQ_HOME不存在的问题):
在这里插入图片描述

接着配置Broker的启动信息:
broker的启动类为org.apache.rocketmq.broker.BrokerStartup,添加程序运行参数-n 127.0.0.1:9876 autoCreateTopicEnable=true,然后运行即可。

-n 127.0.0.1:9876 autoCreateTopicEnable=true

在这里插入图片描述
最后运行main()方法,结果如下:
在这里插入图片描述

3、发送消息验证

OK,可以发送成功。
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:00:25  更:2021-12-26 22:03:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:00:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码