wfe_core/traits/queue.rs
1use async_trait::async_trait;
2
3use crate::models::QueueType;
4
5/// Queue provider for distributing workflow execution across workers.
6#[async_trait]
7pub trait QueueProvider: Send + Sync {
8 async fn queue_work(&self, id: &str, queue: QueueType) -> crate::Result<()>;
9 async fn dequeue_work(&self, queue: QueueType) -> crate::Result<Option<String>>;
10 fn is_dequeue_blocking(&self) -> bool;
11 async fn start(&self) -> crate::Result<()>;
12 async fn stop(&self) -> crate::Result<()>;
13}