Rust开发实战-Rocketmq name server rust版本

我是蚂蚁背大象(Apache EventMesh PMC&Committer),文章对你有帮助给Rocketmq-rust star,关注我GitHub:mxsm,文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsm@apache.com

1. Rocketmq-rust namesrv概述

经过一个多月的开发,终于开发出来了一个Rust版本的Rocketmq name server组件。这个组件和Rocketmq Java版本完全兼容。提供相同的功能。

Github项目地址:Rocketmq-rust

使用Rust开发出来的Rocketmq name server的好处:

  • 启动时间相比Java版本大大减少
vbscript 复制代码
可以看到启动不到一秒钟就完成整个Rocketmq name server的启动。
  • 有着跨平台的特性(这里需要在不同的平台进行编译)

  • 内存安全,由于Rust语言的特性没有内存的回收机制。

如果平时有使用Rocketmq,并且本地需要启动Name server可以考虑使用这个Rust版本,既方便有快速。下载地址:github.com/mxsm/rocket...

2.快速开始Rocketmq-rust name server

快速的使用Rocketmq的name server有两种方式:

  • 直接下载编译好的程序
  • 使用cargo命令进行安装
  • 使用源码进行编译

2.1 下载二进制文件

首先从Github的版本页面下载二进制文件rocketmq-rust-all-bin-0.1.0.zip

文件下载后进行解压解压后可以看到如下两个文件夹如下图:

windowsLinux 两个平台的文件。

Mac的这个版本暂时没有提供,后续的版本会提供。

下面就以Windows为例(Linux的大家也可以自己去尝试现在的windows10,可以安装一个WSL)。在windows 的文件里面有 rocketmq-namesrv-rust.exe 的执行文件这个就是Rocketmq name server的启动文件。

双击即可启动。如下图所示:

通过如下命令查看使用:

powershell 复制代码
rocketmq-namesrv-rust.exe --help

RocketMQ Name server(Rust)

Usage: rocketmq-namesrv-rust.exe [OPTIONS]

Options:
  -p, --port <PORT>    rocketmq name server port [default: 9876]
  -i, --ip <IP>        rocketmq name server ip [default: 127.0.0.1]
  -c, --config <FILE>  rocketmq name server config file
  -h, --help           Print help
  -V, --version        Print version

这里可以配置rocketmq name server的ip地址和端口以及配置文件。相对于Java版本这里我做了一些优化

2.2 通过命令安装

通过rust的cargo命令进行安装,我这里用linux作为例子(WSL)。使用一下命令

shell 复制代码
 cargo install rocketmq-namesrv

等待安装到本地。

然后运行验证一下,运行命令

shell 复制代码
rocketmq-namesrv-rust

通过查看发现运行成功。

2.3 使用源码进行编译

使用源码编译和通过cargo命令进行安装是一样的首先需要rust进行安装,版本最小为1.75.0 。然后从Github rocketmq-rust 将源代码clone到本地,然后进入代码的根目录。运行如下命令:

arduino 复制代码
cargo run --bin rocketmq-namesrv-rust

就能运行rocketmq name server了。

3. 功能验证

功能如何验证,首先我们将**rocketmq-dashboard** 的代码clone到本地或者如果本地有对应的也可以。

验证都用IDEA来进行

1. 启动rust版本的nameserver

2. 启动rocketmq-dashboard

通过上面的nameserver打印的日志可以看出来已经连上了(到这里Broker还没有启动), 登录web进入发现也没呀任何数据,如下图:

3 启动Broker注册

name server收到broker的注册请求。下面我们看一下web页面的信息。

数据已经注册上去了。到这里可以发现基本功能都已经实现了。

4. 总结

当前 rocketmq-rust 这个项目基本用rust实现了一个Rocketmq name server的功能,这个组件仔功能方面可能会有些bug存在,后续也会进行进一步的测试和修复。使用过程中发现问题可以提ISSUE 与此同时如果对 rustrocketmq 感兴趣欢迎大家一起参与到项目中来。

相关推荐
咩咩啃树皮6 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚7 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白8 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司9 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地10 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415910 小时前
TCP超时重传机制是为了解决什么问题?
java
段一凡-华北理工大学10 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
莫逸风12 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
z1234567898613 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
yaoxin52112313 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python