广告
返回顶部
首页 > 资讯 > 后端开发 > Python >RocketMQ源码本地搭建调试方法
  • 573
分享到

RocketMQ源码本地搭建调试方法

RocketMQ源码本地搭建调试RocketMQ源码RocketMQ源码调试 2023-01-28 12:01:42 573人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1 GitHub源码2 启动Namesrv3 启动Broker4 启动Producer5 启动Consumer6 总结1 gitHub源码 git clone https://g

1 gitHub源码

git clone https://github.com/apache/RocketMQ.git

导入idea,可在命令行执行mvn compile一下,保证源码能够正确编译。本次我使用的master分支的版本-4.8.0。下面我们开始准备启动Namesrv。

2 启动Namesrv

到namesrv模块找到NamesrvStartup,启动main方法,报错如下:

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

需设置环境变量ROCKETMQ_HOME。怎么设置呢?看看报错位置:

// org.apache.rocketmq.namesrv.NamesrvStartup#createNamesrvController
if (null == namesrvConfig.getRocketmqHome()) {
    System.out.printf("Please set the %s variable in your environment to match the location of the RocketMQ installation%n", MixAll.ROCKETMQ_HOME_ENV);
    System.exit(-2);
}

从namesrvConfig.getRocketmqHome中获取的ROCKETMQ_HOME,进一步发现是NamesrvConfig里面的一个属性

// org.apache.rocketmq.common.namesrv.NamesrvConfig
// ROCKETMQ_HOME_PROPERTY = "rocketmq.home.dir";
// ROCKETMQ_HOME_ENV = "ROCKETMQ_HOME";
private String rocketmqHome = System.getProperty(MixAll.ROCKETMQ_HOME_PROPERTY, System.getenv(MixAll.ROCKETMQ_HOME_ENV));
  • 为方便,可直接在源码NamesrvStartup的main方法第一行
  • 也可设置环境变量ROCKETMQ_HOME
  • 或启动时加入命令行参数 -Drocketmq.home.dir=/path
public static void main(String[] args) {
    System.setProperty(MixAll.ROCKETMQ_HOME_PROPERTY, "/Users/apple/doc/IDEAProjects/rocketmq");
    main0(args);
}

再次启动Namesrv,报错如下:

提示在我们配置的ROCKETMQ_HOME 目录下,没找到conf\logback_namesrv.xml 配置文件。

项目中搜索logback_namesrv.xml 文件,找到在distribution\conf 目录下存在很多配置,可直接使用这些配置文件。直接把distribution\conf 目录copy到配置的ROCKETMQ_HOME 目录下即可。
然后在来启动一下,控制台打印:

说明NameSrv启动成功

3 启动Broker

找到BrokerStartup,直接启动:

Please set the ROCKETMQ_HOME variable in your environment to match the location of the RocketMQ installationDisconnected from the target VM, address: '127.0.0.1:51797', transport: 'Socket'

知道咋办了吧。

broker需要连接namrsrv,所以在BrokerStartup 的main方法第一行添加如下两行代码:

public static void main(String[] args) {
   System.setProperty(MixAll.ROCKETMQ_HOME_PROPERTY, "/Users/apple/doc/IDEAProjects/rocketmq");
        System.setProperty(MixAll.NAMESRV_ADDR_PROPERTY, "127.0.0.1:9876");
    start(createBrokerController(args));
}

再启动:

虽然打印启动成功,再验证是否能成功发送和接收消息。

4 启动Producer

Producer的demo代码:

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

public class ProducerTest {
    public static void main(String[] args) throws Exception {
        String namesrvAddr = "127.0.0.1:9876";
        String group = "test_group";
        String topic = "test_hello_rocketmq";
        // 构建Producer实例
        DefaultMQProducer producer = new DefaultMQProducer();
        producer.setNamesrvAddr(namesrvAddr);
        producer.setProducerGroup(group);
        // 启动producer
        producer.start();
        // 发送消息
        SendResult result = producer.send(new Message(topic, "hello rocketmq".getBytes()));
        System.out.println(result.getSendStatus());
        // 关闭producer
        producer.shutdown();
    }
}

启动ProducerTest,控制台打印SEND_OK,我们的producer发送消息也OK。

5 启动Consumer

上代码:

import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerOrderly;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.MessageExt;

import java.util.List;
import java.util.concurrent.TimeUnit;

public class ConsumerTest {

    public static void main(String[] args) throws Exception {
        String namesrvAddr = "127.0.0.1:9876";
        String group = "test_consumer_group";
        String topic = "test_hello_rocketmq";
        // 初始化consumer
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer();
        consumer.setNamesrvAddr(namesrvAddr);
        consumer.setConsumerGroup(group);
        // 订阅topic
        consumer.subscribe(topic, (String) null);
        // 设置消费的位置,由于producer已经发送了消息,所以我们设置从第一个开始消费
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        // 添加消息监听器
        consumer.reGISterMessageListener(new MessageListenerOrderly() {
            @Override
            public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) {
                msgs.forEach(msg -> {
                    System.out.println(new String(msg.getBody()));
                });
                return ConsumeOrderlyStatus.SUCCESS;
            }
        });
        // 启动consumer
        consumer.start();
        // 由于是异步消费,所以不能立即关闭,防止消息还未消费到
        TimeUnit.SECONDS.sleep(2);
        consumer.shutdown();
    }
}

启动消费者,能够成功消费到消息,控制台打印hello rocketmq

6 总结

中间出一些问题,都能根据提示信息在源码中找到相应解决方案,多看源码,是成长捷径。

到此这篇关于RocketMQ源码本地搭建调试的文章就介绍到这了,更多相关RocketMQ源码本地搭建调试内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: RocketMQ源码本地搭建调试方法

本文链接: https://www.lsjlt.com/news/178463.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • RocketMQ源码本地搭建调试方法
    目录1 GitHub源码2 启动Namesrv3 启动Broker4 启动Producer5 启动Consumer6 总结1 GitHub源码 git clone https://g...
    99+
    2023-01-28
    RocketMQ源码本地搭建调试 RocketMQ源码 RocketMQ源码调试
  • 如何搭建RocketMQ在本地IDEA开发调试环境
    今天小编给大家分享一下如何搭建RocketMQ在本地IDEA开发调试环境的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言发...
    99+
    2023-06-29
  • 搭建RocketMQ在本地IDEA开发调试环境教程
    目录前言生成安装包启动NameServer启动broker安装RocketMQConsole尽情的DEBUG前言 发现公司这边的消息中间件采用了aliyun的RocketMQ服务,熟...
    99+
    2022-11-13
  • mysql源码调试(一)环境搭建
    操作系统:windows server 2012 R2VS版本:visio studio 2015 community机器配置:4core/4G安装所需包:cmake,bison,boost,activep...
    99+
    2022-10-18
  • ubuntu搭建本地源的方法是什么
    搭建 Ubuntu 本地源的方法有以下几种:1. 使用 apt-mirror 工具:apt-mirror 是一个自动化下载 Ubun...
    99+
    2023-09-16
    ubuntu
  • 云服务器本地搭建方法
    选择云服务供应商 选择云服务器供应商需要考虑以下因素: 可用性:选择一个稳定可靠的云服务供应商可以帮助您减少因宕机或故障导致的数据损失。 安全性:选择一个安全的云服务供应商可以帮助您保障数据的安全,避免数据被黑客攻击或其他安全问题。...
    99+
    2023-10-28
    服务器 方法
  • 微信小程序本地调试配置怎么搭建
    这篇文章主要介绍“微信小程序本地调试配置怎么搭建”,在日常操作中,相信很多人在微信小程序本地调试配置怎么搭建问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序本地调试配置怎么搭建”的疑惑有所帮助!接下来...
    99+
    2023-06-26
  • VSCode 搭建 x264 源码调试环境的详细步骤
    目录1.下载 x2642. 使用上一节介绍的方法为 x264 生成支持 debug 的 x264.exe3. 在 VSCode 中打开 x264 源码文件夹4. 创建并配置 laun...
    99+
    2022-11-13
    VSCode源码调试 VSCode  x264 源码调试
  • 云服务器本地搭建方法教程
    在搭建云服务器时,用户需要考虑以下几个方面: 选择合适的云服务器供应商 在选择云服务器供应商时,需要考虑以下因素: 云服务器的稳定性和安全性; 云服务器的价格和服务质量; 云服务器的数据备份和恢复能力。 安装云服务器 在确定好...
    99+
    2023-10-28
    服务器 方法 教程
  • 浅析搭建github本地仓库的方法
    在如今的软件开发领域中,版本控制是必不可少的工具。GitHub作为一个非常流行的代码托管平台,为开发者提供了很多的便利,例如代码托管、团队协作、问题跟踪、CI/CD等等。在使用GitHub时,我们经常需要使用本地仓库,下面将介绍如何搭建Gi...
    99+
    2023-10-22
  • 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
    关注**微信公众号:【芋艿的后端小屋】**有福利:RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表RocketMQ / MyCAT / Sharding-JD...
    99+
    2022-10-18
  • vs2022 qt环境搭建调试的方法步骤
    建议:先安装qt再安装vs! 1、安装qt6,如下图,勾选msvc2019即可,其它自行决定,剩下安装自动的; 2、vs2022安装没什么说的,因为已经是模块化安装了,如下图,这是...
    99+
    2022-11-12
  • 怎么调试React源码?多种工具下的调试方法介绍
    怎么调试React源码?下面本篇文章带大家聊聊多种工具下的调试React源码的方法,介绍一下在贡献者、create-react-app、vite项目中如何debugger React的真实源码,希望对大家有所帮助!clone React将R...
    99+
    2023-10-22
    React.js Visual Studio Code WebStorm
  • 搭建github本地仓库的方法是什么
    这篇文章主要介绍“搭建github本地仓库的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“搭建github本地仓库的方法是什么”文章能帮助大家解决问题。什么是本地仓库?本地仓库指的是保存在...
    99+
    2023-07-05
  • 浅析windows本地搭建git服务器的方法
    随着Git的流行,越来越多的公司和个人开始使用Git进行版本控制。虽然有很多在线的Git托管服务如Github、Gitlab和Bitbucket,但是对于一些开发者来说,在本地搭建Git服务器是非常有必要的。本文就将介绍如何在Windows...
    99+
    2023-10-22
  • 本地ftp服务器的搭建方法是什么
    本地FTP服务器的搭建方法如下:1. 安装FTP服务器软件:在Windows操作系统中,可以选择安装FileZilla Server...
    99+
    2023-06-04
    ftp服务器的搭建 ftp服务器 服务器
  • 3分钟快速搭建nodejs本地服务器方法运行测试html/js
    做前端的都知道,公司的项目在自己的电脑上搭建环境是挺麻烦的一件事情 首先:一般个人电脑没公司的配置性能好, 其次:搭建公司项目在自己电脑涉及很多缓存环境,资源环境包,数据库等的限制,加起来够搞一天...
    99+
    2022-06-04
    快速 服务器 测试
  • Java调用elasticsearch本地代码的操作方法
    目录一、为什么要进行本地调用1.基于性能的考虑2.基于某些特殊的需求3.与已有的使用原生代码编写的程序之间进行集成。二、使用JNI实现本地调用三、elasticsearch使用JNA...
    99+
    2022-11-12
  • webpack-dev-server搭建本地服务器的实现方法
    本篇内容介绍了“webpack-dev-server搭建本地服务器的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言webpa...
    99+
    2023-06-20
  • 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
    前言:  由于公司业务服务器大部分都在内网环境下运行,内网环境无法直接使用yum安装升级更新软件,所以需要自建Yum源来满足目前日常工作需要。 YUM 常用命令参数: yum makecache ...
    99+
    2023-10-25
    linux 运维 服务器 centos
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作