2022-07-31 13:32:37 +00:00
|
|
|
use fang::asynk::async_queue::AsyncQueue;
|
|
|
|
use fang::asynk::async_queue::AsyncQueueable;
|
|
|
|
use fang::asynk::async_worker_pool::AsyncWorkerPool;
|
|
|
|
use fang::AsyncRunnable;
|
2022-08-03 08:37:53 +00:00
|
|
|
use fang::NoTls;
|
2022-07-31 13:32:37 +00:00
|
|
|
use simple_async_worker::MyTask;
|
|
|
|
use std::time::Duration;
|
|
|
|
|
|
|
|
#[tokio::main]
|
|
|
|
async fn main() {
|
|
|
|
env_logger::init();
|
|
|
|
|
|
|
|
log::info!("Starting...");
|
2022-08-01 19:37:32 +00:00
|
|
|
let max_pool_size: u32 = 2;
|
|
|
|
let mut queue = AsyncQueue::builder()
|
|
|
|
.uri("postgres://postgres:postgres@localhost/fang")
|
|
|
|
.max_pool_size(max_pool_size)
|
|
|
|
.duplicated_tasks(true)
|
|
|
|
.build();
|
2022-07-31 13:32:37 +00:00
|
|
|
|
2022-08-01 19:37:32 +00:00
|
|
|
queue.connect(NoTls).await.unwrap();
|
2022-07-31 13:32:37 +00:00
|
|
|
log::info!("Queue connected...");
|
|
|
|
|
2022-08-02 14:32:58 +00:00
|
|
|
let mut pool: AsyncWorkerPool<AsyncQueue<NoTls>> = AsyncWorkerPool::builder()
|
2022-08-01 19:37:32 +00:00
|
|
|
.number_of_workers(max_pool_size)
|
2022-07-31 13:32:37 +00:00
|
|
|
.queue(queue.clone())
|
|
|
|
.build();
|
|
|
|
|
|
|
|
log::info!("Pool created ...");
|
|
|
|
|
|
|
|
pool.start().await;
|
|
|
|
log::info!("Workers started ...");
|
|
|
|
|
|
|
|
let task1 = MyTask::new(0);
|
|
|
|
let task2 = MyTask::new(20_000);
|
|
|
|
|
2022-07-31 15:15:00 +00:00
|
|
|
queue
|
|
|
|
.insert_task(&task1 as &dyn AsyncRunnable)
|
|
|
|
.await
|
|
|
|
.unwrap();
|
|
|
|
queue
|
|
|
|
.insert_task(&task2 as &dyn AsyncRunnable)
|
|
|
|
.await
|
|
|
|
.unwrap();
|
2022-07-31 13:32:37 +00:00
|
|
|
|
|
|
|
tokio::time::sleep(Duration::from_secs(100)).await;
|
|
|
|
}
|