pub struct Queue { /* private fields */ }
Implementations§
Source§impl Queue
impl Queue
Sourcepub fn new(redis_client: RedisClient, prefetch: i32) -> Queue
pub fn new(redis_client: RedisClient, prefetch: i32) -> Queue
Examples found in repository?
examples/consume.rs (line 14)
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}
Sourcepub async fn start(&mut self) -> Result<()>
pub async fn start(&mut self) -> Result<()>
Examples found in repository?
examples/consume.rs (line 47)
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}
Sourcepub fn new_consumer(&mut self) -> Consumer
pub fn new_consumer(&mut self) -> Consumer
Examples found in repository?
examples/consume.rs (line 34)
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}
Sourcepub async fn publish(&mut self, job: &Job) -> Result<()>
pub async fn publish(&mut self, job: &Job) -> Result<()>
Examples found in repository?
examples/consume.rs (line 25)
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}
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Queue
impl !RefUnwindSafe for Queue
impl Send for Queue
impl Sync for Queue
impl Unpin for Queue
impl !UnwindSafe for Queue
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