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