pub trait Storage: Clone {
    type Output: Job;

Show 13 methods // Required methods fn push<'life0, 'async_trait>( &'life0 mut self, job: Self::Output ) -> Pin<Box<dyn Future<Output = StorageResult<JobId>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn schedule<'life0, 'async_trait>( &'life0 mut self, job: Self::Output, on: DateTime<Utc> ) -> Pin<Box<dyn Future<Output = StorageResult<JobId>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn len<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = StorageResult<i64>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn fetch_by_id<'life0, 'life1, 'async_trait>( &'life0 self, job_id: &'life1 JobId ) -> Pin<Box<dyn Future<Output = StorageResult<Option<JobRequest<Self::Output>>>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn consume( &mut self, worker_id: &WorkerId, interval: Duration, buffer_size: usize ) -> JobStreamResult<Self::Output>; fn ack<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, worker_id: &'life1 WorkerId, job_id: &'life2 JobId ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn retry<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, worker_id: &'life1 WorkerId, job_id: &'life2 JobId ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn keep_alive<'life0, 'life1, 'async_trait, Service>( &'life0 mut self, worker_id: &'life1 WorkerId ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>> where Service: 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn kill<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, worker_id: &'life1 WorkerId, job_id: &'life2 JobId ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn update_by_id<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, job_id: &'life1 JobId, job: &'life2 JobRequest<Self::Output> ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn heartbeat<'life0, 'async_trait>( &'life0 mut self, pulse: StorageWorkerPulse ) -> Pin<Box<dyn Future<Output = StorageResult<bool>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn reschedule<'life0, 'life1, 'async_trait>( &'life0 mut self, job: &'life1 JobRequest<Self::Output>, wait: Duration ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; // Provided method fn reenqueue_active<'life0, 'life1, 'async_trait>( &'life0 mut self, _job_ids: Vec<&'life1 JobId> ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>> where Self: Send + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... }
}
Available on crate feature storage only.
Expand description

Represents a Storage that can be passed to a Builder

Required Associated Types§

source

type Output: Job

The type of job that can be persisted

Required Methods§

source

fn push<'life0, 'async_trait>( &'life0 mut self, job: Self::Output ) -> Pin<Box<dyn Future<Output = StorageResult<JobId>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Pushes a job to a storage

source

fn schedule<'life0, 'async_trait>( &'life0 mut self, job: Self::Output, on: DateTime<Utc> ) -> Pin<Box<dyn Future<Output = StorageResult<JobId>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Push a job into the scheduled set

source

fn len<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = StorageResult<i64>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Return the number of pending jobs from the queue

source

fn fetch_by_id<'life0, 'life1, 'async_trait>( &'life0 self, job_id: &'life1 JobId ) -> Pin<Box<dyn Future<Output = StorageResult<Option<JobRequest<Self::Output>>>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Fetch a job given an id

source

fn consume( &mut self, worker_id: &WorkerId, interval: Duration, buffer_size: usize ) -> JobStreamResult<Self::Output>

Get the stream of jobs

source

fn ack<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, worker_id: &'life1 WorkerId, job_id: &'life2 JobId ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Acknowledge a job which returns Ok

source

fn retry<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, worker_id: &'life1 WorkerId, job_id: &'life2 JobId ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Retry a job

source

fn keep_alive<'life0, 'life1, 'async_trait, Service>( &'life0 mut self, worker_id: &'life1 WorkerId ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>>where Service: 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called by a Worker to keep the storage alive and prevent jobs from being deemed as orphaned

source

fn kill<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, worker_id: &'life1 WorkerId, job_id: &'life2 JobId ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Kill a job

source

fn update_by_id<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, job_id: &'life1 JobId, job: &'life2 JobRequest<Self::Output> ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Update a job details

source

fn heartbeat<'life0, 'async_trait>( &'life0 mut self, pulse: StorageWorkerPulse ) -> Pin<Box<dyn Future<Output = StorageResult<bool>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Used for scheduling jobs

source

fn reschedule<'life0, 'life1, 'async_trait>( &'life0 mut self, job: &'life1 JobRequest<Self::Output>, wait: Duration ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Reschedule a job

Provided Methods§

source

fn reenqueue_active<'life0, 'life1, 'async_trait>( &'life0 mut self, _job_ids: Vec<&'life1 JobId> ) -> Pin<Box<dyn Future<Output = StorageResult<()>> + Send + 'async_trait>>where Self: Send + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Used to recover jobs when a Worker shuts down.

Object Safety§

This trait is not object safe.

Implementors§