在Rust中实现RabbitMq流客户端的简单适配器

c7rzv4ha  于 2022-12-29  发布在  RabbitMQ
关注(0)|答案(1)|浏览(469)

我一直在学习铁 rust ,现在我开始写我自己的学习例子。
我一直在尝试为rabbitMq(库项目是https://github.com/rabbitmq/rabbitmq-stream-rust-client)创建一个简单的 Package 器(生产者/消费者)。
问题是,我一直得到错误,流是找不到。

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: StreamDoesNotExist { stream: "loan_request" }

我的main代码如下所示:

mod consumer;

use tokio;
use consumer::{Consumer, BaseCallback};

#[tokio::main]
async fn main() {
    let loan_request = BaseCallback {data: "{loan_id: 1}".to_string()};
    let consumer_response = Consumer::set_event_callback("loan_request", loan_request).await;
}

我创建一个消费者和一个队列的代码如下:

use rabbitmq_stream_client::{Environment};
use serde_json;
use serde::{Serialize, Deserialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct BaseCallback {
    pub data: String
}

pub struct Consumer {
    environment: Environment,
    callback: BaseCallback
}

impl Consumer {
    async fn new_connection() -> Environment {
        let environment_instance = Environment::builder()
            .host("localhost")
            .port(5552)
            .build()
            .await.unwrap();
        environment_instance
    }

    pub async fn set_event_callback(event_name: &str, callback: BaseCallback) {
        let connection = Self::new_connection().await;
        let consumer = connection.consumer();
        consumer
            .build(event_name)
            .await
            .unwrap();
    }
}

任何关于我做错了什么的建议都非常感谢。

llycmphe

llycmphe1#

对于任何想知道的人,首先需要在RabbitMq上创建队列,为此使用如下的客户端

let environment = Environment::builder()
        .host("localhost")
        .port(5552)
        .build()
        .await?;

    environment
        .stream_creator()
        .create("loan_request")
        .await

然后我们可以实现上面的消费者来消费,并处理“loan_request”队列中的事件。

相关问题