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}