聊聊 Pulsar:编译 Pulsar 源码并搭建源码环境

2022-03-15  本文已影响0人  老周聊架构

一、环境准备

老周这里编译 Pulsar 的版本是 2.9.1,也是 Pulsar 目前最新的版本。

二、源码编译

编译&安装命令:

mvn install -DskipTests
执行完上述的 maven 命令后,发现 managed-ledger 模块编译报错,如下: 在这里插入图片描述

点进去发现是 proto 包下的 MLDataFormats 类中的存在静态类与源码中的存在冲突,导致编译失败,所以我手动的导入正确的 proto 包下的类。

再次进行编译:

在这里插入图片描述
额,又编译失败,很明显可以看出这是 test 包下的测试类,但我上面的 mvn install -DskipTests 命令,不是会跳过测试类进行编译吗?这就要说下这两者的区别了:

mvn install -Dmaven.test.skip=true 测试类不会生成.class 文件
mvn install -DskipTests 测试类会生成.class文件

测试类不想导入正确的 proto 包中类的话。我们就下面这个命令来编译安装:

mvn install -Dmaven.test.skip=true

这次就能忽略测试类进行相应的编译以及安装:

在这里插入图片描述
当你看到 BUILD SUCCESS 表示编译成功了。

三、Pulsar 的目录结构

3.1 压缩包的目录结构

在这里插入图片描述

3.2 源码的目录结构

在这里插入图片描述

你是不是也有和我一样的感受,这些模块感觉乱七八糟,是的,没错,社区也一直在做模块的一些优化,一些非必要的模块开始被移除、合并到其它模块中去。

3.2.1 辅助、测试类的模块

3.2.2 功能相关的模块

四、环境验证

我们在源码中新建 pulsar-riemann-test 一个自己的测试模块

在这里插入图片描述
/**
 * @author: 微信公众号【老周聊架构】
 */
public class PulsarClientTest {
    public static void main(String[] args) throws PulsarClientException {
        PulsarClient client = PulsarClient.builder()
                .listenerThreads(1)
                .ioThreads(1)
                .serviceUrl("pulsar://127.0.0.1:6650")
                .build();
        System.out.println(client.toString());
    }
}

先写个 PulsarClientTest 测试类,然后跑一下,打印出日志,没有报错的话,说明这个 Pulsar 源码环境是 ok 的。

org.apache.pulsar.client.impl.PulsarClientImpl@5a4aa2f2
上一篇 下一篇

猜你喜欢

热点阅读