我用Rust开发Rocketmq name server

我是蚂蚁背大象(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版本大大减少

image.png

可以看到启动不到一秒钟就完成整个Rocketmq name server的启动。
  • 有着跨平台的特性(这里需要在不同的平台进行编译)

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

如果平时有使用Rocketmq,并且本地需要启动Name server可以考虑使用这个Rust版本,既方便有快速。下载地址:https://github.com/mxsm/rocketmq-rust/releases/download/v0.1.0/rocketmq-rust-all-bin-0.1.0.zip

2.快速开始Rocketmq-rust name server

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

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

2.1 下载二进制文件

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

image.png

image.png

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

image.png

windowsLinux 两个平台的文件。

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

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

image.png

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

image.png

通过如下命令查看使用:

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版本这里我做了一些优化

image.png

2.2 通过命令安装

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

 cargo install rocketmq-namesrv

等待安装到本地。

image.png

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

rocketmq-namesrv-rust

image.png

通过查看发现运行成功。

2.3 使用源码进行编译

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

cargo run --bin rocketmq-namesrv-rust

就能运行rocketmq name server了。

3. 功能验证

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

验证都用IDEA来进行

1. 启动rust版本的nameserver

image.png

2. 启动rocketmq-dashboard

image.png

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

image.png

3 启动Broker注册

image.png

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

image.png

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

4. 总结

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

image.png

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 Rust 开发 GUI 程序有很多方法。一种常用的方法是使用一个 GUI 库,比如 GTK、Qt 或者 wxWidgets,它们都有 Rust 的绑定。 为了使用这些库,首先你需要在你的 Rust 项目中添加对应的依赖。接下来你就可以像使用其它库一样使用 GUI 库了。 在这些 GUI 库中,GTK 和 Qt 在 Linux 上都很流行,而 wxWidgets 在 Windows 和 MacOS 上很流行。这意味着你可以使用这些库开发跨平台的 GUI 程序。 另外,如果你想使用其它的 GUI 库,比如 WinAPI,你也可以使用 Rust 的 FFI 机制来调用它。 最后,你还可以使用 Web 技术来开发 GUI 程序,比如使用 WebAssembly 来在浏览器中运行 Rust 程序,或者使用一个 Rust 后端来渲染一个 HTML 页面。这些方法都可以让你使用 Rust 开发跨平台的 GUI 程序。 ### 回答2: 要使用Rust开发GUI,可以使用一些流行的GUI库,如GTK+,Qt和Iced。下面是一些简要的指导步骤: 1. 首先,确保已经安装了Rust和Cargo,可以通过官方网站https://www.rust-lang.org/下载并安装。 2. 使用Cargo初始化项目,打开终端并导航到所选目录。然后运行以下命令: ``` cargo new gui_project cd gui_project ``` 3. 打开项目文件夹并编辑Cargo.toml文件,添加所选GUI库的依赖项。例如,对于GTK+和gtk-rs,可以添加以下内容: ``` [dependencies] gtk = "0.9.2" ``` 4. 运行`cargo build`来安装所需的依赖项。 5. 创建一个新的Rust文件(如main.rs)并在其中导入所选库。例如,对于GTK+: ``` use gtk::prelude::*; fn main() { gtk::init().expect("Failed to initialize GTK."); let window = gtk::Window::new(gtk::WindowType::Toplevel); window.set_title("Hello World"); window.set_default_size(350, 70); window.connect_delete_event(|_, _| { gtk::main_quit(); Inhibit(false) }); let label = gtk::Label::new(Some("Hello, World!")); window.add(&label); window.show_all(); gtk::main(); } ``` 6. 使用终端进入项目目录并运行`cargo run`命令。你将会看到一个简单的GTK+窗口显示了"Hello, World!"。 以上仅是使用GTK+作为示例,你也可以选择其他库,每个库都有自己的API和使用方法。根据所选库的文档和示例,可以开发出更复杂和功能丰富的GUI应用程序。 ### 回答3: 在Rust中,有几个库可以用于开发GUI应用程序,比如gtk-rs、druid和egui。下面是使用Rust开发GUI的一般步骤: 1. 安装Rust编程语言:在开始之前,您需要安装Rust编程语言。可以访问Rust官方网站(https://www.rust-lang.org/)下载并安装最新的Rust版本。 2. 选择GUI库:选择一个适合您项目需求的GUI库。例如,您可以使用gtk-rs来构建基于GTK的图形用户界面,或者选择druid或egui这样的库,它们提供原生和跨平台GUI渲染。 3. 初始化项目:创建一个新的Rust项目。使用Rust的包管理器Cargo来初始化项目。打开终端并执行以下命令: ``` cargo new my_gui_app cd my_gui_app ``` 4. 添加GUI库依赖:在Cargo.toml文件中将所选GUI库添加为项目的依赖项。例如,如果您选择使用gtk-rs,可以在Cargo.toml中添加如下行: ``` [dependencies] gtk = "0.9" ``` 5. 编写代码:根据所选GUI库的文档和示例进行编码。例如,使用gtk-rs可以创建窗口、按钮等。在源代码文件(例如main.rs)中,导入GUI库并编写代码以构建和显示GUI组件。 6. 构建和运行项目:使用Cargo构建和运行项目。在终端中执行以下命令: ``` cargo build cargo run ``` 使用以上步骤,您可以使用Rust开发GUI应用程序。请注意,具体的实现和代码可能因所选库的不同而有所区别。为了更好地理解和使用每个库,建议阅读相关库的文档和示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值