namespaced_demo/
namespaced_demo.rs

1use async_trait::async_trait;
2use bb8::Pool;
3use sidekiq::{Processor, RedisConnectionManager, Result, Worker};
4
5#[derive(Clone)]
6struct HelloWorker;
7
8#[async_trait]
9impl Worker<()> for HelloWorker {
10    async fn perform(&self, _args: ()) -> Result<()> {
11        println!("Hello, world!");
12
13        Ok(())
14    }
15}
16
17#[tokio::main]
18async fn main() -> Result<()> {
19    tracing_subscriber::fmt::init();
20
21    // Redis
22    let manager = RedisConnectionManager::new("redis://127.0.0.1/")?;
23    let redis = Pool::builder()
24        .max_size(100)
25        .connection_customizer(sidekiq::with_custom_namespace("yolo_app".to_string()))
26        .build(manager)
27        .await?;
28
29    tokio::spawn({
30        let redis = redis.clone();
31
32        async move {
33            loop {
34                HelloWorker::perform_async(&redis, ()).await.unwrap();
35
36                tokio::time::sleep(std::time::Duration::from_secs(1)).await;
37            }
38        }
39    });
40
41    // Sidekiq server
42    let mut p = Processor::new(redis.clone(), vec!["default".to_string()]);
43
44    // Add known workers
45    p.register(HelloWorker);
46
47    // Start!
48    p.run().await;
49    Ok(())
50}