#redis-queue #async #rsmq #port #system #methods #original

rsmq_async_lite

将异步RSMQ移植到Rust。RSMQ是一个简单的Redis队列系统,适用于任何Redis v2.4+。它包含与原版相同的函数,可在https://github.com/smrchy/rsmq中找到。

4个稳定版本

2.3.0 2020年12月6日
2.2.0 2020年12月6日
2.1.1 2021年3月3日
2.1.0 2020年12月5日

1234数据库接口

MIT许可证

30KB
549

RSMQ在异步Rust中的实现

RSMQ移植到异步Rust。RSMQ是一个简单的Redis队列系统,适用于任何Redis v2.6+。它包含与原版相同的函数,可在https://github.com/smrchy/rsmq中找到。

此crate在实现中使用异步。如果要在同步代码中使用它,可以使用tokio的"block_on"方法。使用异步是为了简化代码,并允许JS代码的一对一移植。

Crates.io Crates.io dependency status

安装

查看https://crates.io/crates/rsmq_async_lite

异步执行器

从版本0.16开始,redis依赖项支持tokio和async_std执行器。默认情况下,在建立连接时将猜测您正在使用什么。您可以通过检查redis的Cargo.toml文件中的async-std-comptokio-comp标志来选择一个或另一个。

示例

use rsmq_async_lite::Rsmq;

#[tokio::main]
async fn main() {
    let mut rsmq = Rsmq::<String>::new(Default::default())
        .await
        .expect("connection failed");

    rsmq.create_queue("myqueue", None, None, None)
        .await
        .expect("failed to create queue");

    rsmq.send_message("myqueue", &"testmessage".to_string(), None)
        .await
        .expect("failed to send message");

    let message = rsmq
        .receive_message("myqueue", None)
        .await
        .expect("cannot receive message");

    if let Some(message) = message {
        rsmq.delete_message("myqueue", &message.id).await;
    }
}

依赖项

~10MB
~209K SLoC