一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
准备工作
简介
TubeMQ是一款开源的分布式消息中间件,采用Protocol Buffer构建消息对象模型。于2019年9月12日开源,即中秋 前一天。
下载
安装 git
等工具
- 简单粗暴git直接拉取
git clone https://github.com/Tencent/TubeM
复制代码
源码结构
- 整体结构
- 结构释义
可见暂时支持Linux启动、打包可配置化 、丰富的Demo。
试用
牛刀小试
编译
点击生产者Demo运行,报错:
Error:(26, 54) java: 程序包com.tencent.tubemq.corebase.protobuf.generated不存在
复制代码
发现这个包应该是核心包里的,于是全局搜索这个类,很遗憾没有。全局搜索,在 RPC.proto
里找到了下面这段:
option java_package = "com.tencent.tubemq.corebase.protobuf.generated";
option java_outer_classname = "RPCProtos";
option java_generate_equals_and_hash = true;
option optimize_for = SPEED;
复制代码
嗯,是gRPC
的语法。 查到中央仓库暂无tubemq
(2019中秋),于是自己编译它. 开始编译,无意外,日常报错:
[ERROR] Failed to execute goal com.github.igor-petruk.protobuf:protobuf-mavenplugin:0.6.3:run (default) on project tubemq-core: Cannot execute 'protoc': Cannot run program "protoc": CreateProcess error=2, 系统找不到指定的文件。 -> [Help 1]
复制代码
于是找到这个插件:
<p1ugin>
<groupId> com.github.igor-petruk.protobuf</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.3</version>
<executions>
<execution>
<phase>generate-sources </phase>
<goals>
<goa1>run</goa1>
</goals>
</execution>
</executions>
</plugin>
复制代码
插件执行时,找不到 protoc
程序,当然,我没有装这个。于是安装protoc
Windows版。
Protocol Buffer
- Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适 合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列 化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API.
- 可见TubeMQ也采用了这种格式.
- 考虑到Windows安装protobuf的复杂性,所以到Linux环境编译TubeMQ试试.
- 先确认Maven存在与否,输入 mvn -version ,如果不存在请安装Maven
- 接着按上文地址下载TubeMQ源码
编译
mvn clean compile
复制代码
同样的错误,没有安装 protoc ,意料之中^_^
但是Linux装工具简单多了,相比Windows.
安装protoc
下载地址 2.5.0 pan.baidu.com/s/1pJlZubT
下载2.5.0,因为TubeMQ暂时用的是2.5.0的jar包。 2.6.1 pan.baidu.com/share/init?… 密码:paju
下载完毕,执行编译等.
sh configure --prefix=/usr/local/protobuf-2.6.1
make && make check && make install
复制代码
执行命令,------漫长的等待后。 常规的,检查有无安装成功
配置环境变量
安装完毕.
- 再次编译 mvn clean compile ,报错了,但是方向是对的了,因为这次报错说安装的protoc版本不匹配:
- 查看下项目中的protobuf-java包的版本号是2.5.0,在中央仓库看了下,这个版本竟然是2013年的↓
可能需要安装2.5.0版本的环境.这时刘 欢的歌声响起:"看成败人生豪迈,只不过是从头再来"。^_^那就重新来,下载2.5.0的tar包,执行命令,编 译,"漫长的等待"(。-ω-)zzz↓
<dependency>
<groupId>com.sleepycat</groupId>
<artifactId>je</artifactId>
<version>5.0.73</version> <!--tubemq-server.pom.xml - 增加版本号-->
</dependency>
复制代码
Bingo!编译成功。
mvn clean package
复制代码
启动
Server
- 打包项目,效果
- install
mvn clean install
复制代码
- 运行
cd ../tubemq-server/target/tubemq-server-3.8.0-bin/tubemq-server-3.8.0/conf # 进入这根目录,修改配置文件
cd ../tubemq-server
sh bin/master.sh start # 启动
sh bin/broker.sh start # 启动
复制代码
启动未见错误日志,待续