redis_mq/
consumer.rs

1use std::{sync::Arc};
2
3use crate::{
4    job::Job,
5};
6use anyhow::Result;
7
8use tokio::sync::Mutex;
9
10use tokio::{sync::mpsc};
11
12pub struct Consumer {
13    receiver: Arc<Mutex<mpsc::Receiver<Job>>>,
14}
15
16impl Consumer {
17    pub fn new(receiver: Arc<Mutex<mpsc::Receiver<Job>>>) -> Consumer {
18        Consumer { receiver }
19    }
20
21    pub async fn fetch_task(&mut self) -> Result<Job> {
22        Ok(self.receiver.lock().await.recv().await.unwrap())
23    }
24}