pub struct Consumer { /* private fields */ }
Implementations§
Source§impl Consumer
impl Consumer
pub fn new(receiver: Arc<Mutex<Receiver<Job>>>) -> Consumer
Sourcepub async fn fetch_task(&mut self) -> Result<Job>
pub async fn fetch_task(&mut self) -> Result<Job>
Examples found in repository?
examples/consume.rs (line 39)
12async fn main() -> Result<()> {
13 let redis = RedisClient::new().await?;
14 let mut queue = Queue::new(redis, 10);
15
16 let _t2 = tokio::spawn({
17 let mut q = queue.clone();
18
19 async move {
20 let mut i: i32 = 0;
21 loop {
22 let job = Job { id: format!("{i}") };
23 i += 1;
24
25 q.publish(&job).await.unwrap();
26 sleep(Duration::from_millis(5)).await;
27 }
28 }
29 });
30
31 let consumers: Vec<_> = (1..50)
32 .into_iter()
33 .map(|i| {
34 let mut consumer = queue.new_consumer();
35
36 tokio::spawn({
37 async move {
38 loop {
39 let job = consumer.fetch_task().await;
40 println!("consumer_id: {}, consumed job {:?}", i, job)
41 }
42 }
43 })
44 })
45 .collect();
46
47 queue.start().await?;
48 try_join_all(consumers).await?;
49
50 Ok(())
51}
Auto Trait Implementations§
impl Freeze for Consumer
impl !RefUnwindSafe for Consumer
impl Send for Consumer
impl Sync for Consumer
impl Unpin for Consumer
impl !UnwindSafe for Consumer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more