3 个版本

0.0.3 2021年3月22日
0.0.2 2021年3月11日
0.0.1 2021年3月11日

#1937 in 异步

MIT 许可证

15KB
158

JackRabbit

应始终运行的服务。

目的

此服务的目的是使用 Rust、MessagePack、RocksDB 和安全 WebSocket 构建一个实时持久化消息队列,它是多生产者和单消费者。

此服务旨在在主系统处理消息的同时,多个客户端可以添加消息,并且有一个故障转移系统连接。故障转移系统没有接收消息,并且是第二个连接的(连接顺序很重要)。

这对于您有一个单一的整体 WebSocket 系统作为 API 并且需要更新(离线)时很有用 - 您可以让故障转移系统在更新主系统时执行工作。

然后您关闭故障转移系统,主系统再次成为主系统。

有关如何构建工作客户端的更多信息,请参阅 tests(目录)文件。

由于 JackRabbit 基于 MessagePack,因此支持 50 多种语言。

此服务非常轻量,因为它几乎不占用内存和 CPU。

当前版本不删除任何消息,因为它可能在未来支持重放。

JackRabbit 需要一个 SSL 证书,并推荐使用 Let's Encrypt,并且还需要一个 DNS A 记录,因为 rustls 不支持 IP 地址。

安装

cargo安装 jackrabbit

  • 需要通过标志传递端口号 - 默认 443

  • 要保存嵌入式 rocksdb 的数据库(路径) - 默认 tmp

  • 链式证书(路径)所在位置 - 默认 certs/chain.pem

  • 私钥(路径)所在位置 - 默认 certs/private_key.pem

  • 示例:jackrabbit --save-path="tmp" --port="443" --cert="certs/chain.pem" --cert-path="certs/private_key.pem"

  • 示例:jackrabbit(使用默认值)

服务

在代码中有 Ubuntu 的一个示例 systemctl 服务,名为 jackrabbit.service

依赖项

~38–55MB
~1M SLoC