2 个不稳定版本

0.2.0 2022年8月15日
0.1.0 2021年12月26日

#31 in #broker

MIT/Apache

315KB
8K SLoC

TeleMQ

TeleMQ - MQTT broker

TeleMQ是一个使用Rust语言实现的实验性MQTT代理。该代理实现了MQTT版本3.1.1规范。

内容

从源代码构建

为了从源代码构建TeleMQ,您需要在您的计算机上安装Rust编程语言。最常见的方法是使用Rustup - 用于管理Rust环境的工具链。

官方安装指南可以在https://rust-lang.net.cn/tools/install页面上找到。

需要更多关于Rustup本身的信息?请参阅文档 - https://rust-lang.github.io/rustup/

一旦您安装了Rust,请将TeleMQ仓库克隆到文件系统上的一个适当的文件夹中。

git clone https://github.com/telemq/telemq.git <DESTINATION_FOLDER>

之后,转到目标文件夹 cd <DESTINATION_FOLDER>(您应该在您导航到的文件夹中有一个Cargo.toml文件)并从Cargo运行一个build命令。

Cargo是Rust包管理器。Cargo下载您的Rust包的依赖项,编译您的包,制作可分发包,并将它们上传到crates.io,这是Rust社区包注册处。您可以在GitHub上为此书做出贡献。

https://doc.rust-lang.net.cn/cargo/

cargo build

这将生成一个没有优化的开发构建,这可能对于生产环境是必要的。二进制文件位于<DESTINATION_FOLDER>/target/debug/telemq

为了获得优化后的生产二进制文件,请使用build命令与--release标志。

cargo build --release

与开发构建类似,生成的二进制文件位于<DESTINATION_FOLDER>/target/release/telemq

这些二进制文件是静态链接的,是自给自足的,因此如果需要可以将其移动到任何地方。

运行TeleMQ

假设您要么在包含 telemq 二进制文件的同一文件夹中,要么已将该文件夹添加到您的 $PATH,您可以使用以下命令以默认配置运行它

telemq

TeleMQ 以默认配置运行时,将在 0.0.0.0:1883 上打开一个纯 TCP 监听器,允许连接任何客户端。它还将允许这些客户端订阅和发布到任何主题名称。日志将输出到 stdout,所有从 INFO 级别开始的日志都将显示出来。保持活动间隔为 120 秒 - 确保您的客户端在此间隔内至少发送一条消息(PUBLISH 或 PINGREQ)。最大连接数是 10,000。

要查看所有选项,请运行

telemq --help

要覆盖默认行为,可以使用 TeleMQ 配置文件。有关配置选项的信息,请参阅 telemq_config.md

在Docker中运行

基本运行

docker run -it -p 1883:1883 alexpikalov/telemq

使用自定义配置

docker run -it -p 1883:1883 -v docker_volume_with_config alexpikalov/telemq --config=/path/to/config.toml

对于第二种选项,应创建一个包含 config TOML 文件的相应卷。

$SYS 主题

$SYS 主题是代理本身用于向所有订阅者发布关于自身系统信息的特殊主题。

  • $SYS/broker/bytes/received - 包含自代理运行以来从生产者接收的字节数信息。
  • $SYS/broker/bytes/sent - 包含自代理运行以来发送到消费者的字节数信息。
  • $SYS/broker/messages/received - 包含自代理运行以来从生产者接收的消息数信息。
  • $SYS/broker/messages/sent - 包含自代理运行以来发送到消费者的消息数信息。
  • $SYS/broker/clients/connected - 包含当前连接到代理的客户端数信息。
  • $SYS/broker/clients/maximum - 包含同时连接到代理的最大客户端数信息。

许可证

此项目采用以下任一许可证:

由您选择。

依赖关系

~27–41MB
~760K SLoC