Rust 中的 Redis Pub/Sub:未收到消息

问题描述 投票:0回答:1

我正在尝试使用 Redis 发布/订阅通过创建通道来发送数据。问题是,即使发布了该消息,也没有收到该消息。我在这方面做错了什么?我该如何纠正它?我是 Rust 新手。

use redis::{Client, Commands, RedisError};

#[tokio::main]
async fn main() -> Result<(), RedisError> {
    // Connect to Redis
    let client = redis::Client::open("redis://127.0.0.1/")?;
    let mut con = client.get_connection()?;
    println!("Successfully connected to Redis!");
    let channel = "mychannel";
    let message = "hello";
    con.publish(channel, message)?;
    let mut pubsub = con.as_pubsub();

    pubsub.subscribe("mychannel")?;
    println!("subscribed to mychannel");

    loop {
        println!("waiting for message");
        let msg = pubsub.get_message()?;
        let payload: String = msg.get_payload()?;
        println!("Received data on mychannel: {}", payload);
    
        println!("got message");
    }


}
rust redis connection rust-cargo
1个回答
0
投票

显然在发布消息之前您需要

subscribe

Redis Pub/Sub 它只是在发布时将消息传递给所有当前订阅者。
尝试一下:

let mut pubsub = con.as_pubsub();
pubsub.subscribe("mychannel")?;
println!("subscribed to mychannel");

// now you can publish message
con.publish(channel, message)?;
© www.soinside.com 2019 - 2024. All rights reserved.