Trait background_jobs::UnsendJob
source · pub trait UnsendJob: Serialize + DeserializeOwned + 'static {
type State: Clone + 'static;
type Error: Into<BoxError>;
type Future: Future<Output = Result<(), Self::Error>>;
type Spawner: UnsendSpawner;
const NAME: &'static str;
const QUEUE: &'static str = "default";
const MAX_RETRIES: MaxRetries = _;
const BACKOFF: Backoff = _;
const HEARTBEAT_INTERVAL: u64 = 5_000u64;
// Required method
fn run(self, state: Self::State) -> Self::Future;
// Provided methods
fn span(&self) -> Option<Span> { ... }
fn queue(&self) -> &str { ... }
fn max_retries(&self) -> MaxRetries { ... }
fn backoff_strategy(&self) -> Backoff { ... }
fn heartbeat_interval(&self) -> u64 { ... }
}
Expand description
The UnsendJob trait defines parameters pertaining to an instance of a background job
This trait is used to implement generic Unsend Jobs in the background jobs library. It requires that implementors specify a spawning mechanism that can turn an Unsend future into a Send future
Required Associated Types§
sourcetype Future: Future<Output = Result<(), Self::Error>>
type Future: Future<Output = Result<(), Self::Error>>
The future returned by this job
Importantly, this Future does not require Send
sourcetype Spawner: UnsendSpawner
type Spawner: UnsendSpawner
The spawner type that will be used to spawn the unsend future
Required Associated Constants§
Provided Associated Constants§
sourceconst QUEUE: &'static str = "default"
const QUEUE: &'static str = "default"
The name of the default queue for this job
This can be overridden on an individual-job level, but if a non-existant queue is supplied, the job will never be processed.
sourceconst MAX_RETRIES: MaxRetries = _
const MAX_RETRIES: MaxRetries = _
Define the default number of retries for this job
Defaults to Count(5) Jobs can override
sourceconst BACKOFF: Backoff = _
const BACKOFF: Backoff = _
Define the default backoff strategy for this job
Defaults to Exponential(2) Jobs can override
sourceconst HEARTBEAT_INTERVAL: u64 = 5_000u64
const HEARTBEAT_INTERVAL: u64 = 5_000u64
Define how often a job should update its heartbeat timestamp
This is important for allowing the job server to reap processes that were started but never completed.
Defaults to 5 seconds Jobs can override
Required Methods§
sourcefn run(self, state: Self::State) -> Self::Future
fn run(self, state: Self::State) -> Self::Future
Users of this library must define what it means to run a job.
This should contain all the logic needed to complete a job. If that means queuing more jobs, sending an email, shelling out (don’t shell out), or doing otherwise lengthy processes, that logic should all be called from inside this method.
The state passed into this job is initialized at the start of the application. The state argument could be useful for containing a hook into something like r2d2, or the address of an actor in an actix-based system.
Provided Methods§
sourcefn queue(&self) -> &str
fn queue(&self) -> &str
If this job should not use it’s default queue, this can be overridden in user-code.
sourcefn max_retries(&self) -> MaxRetries
fn max_retries(&self) -> MaxRetries
If this job should not use it’s default maximum retry count, this can be overridden in user-code.
sourcefn backoff_strategy(&self) -> Backoff
fn backoff_strategy(&self) -> Backoff
If this job should not use it’s default backoff strategy, this can be overridden in user-code.
sourcefn heartbeat_interval(&self) -> u64
fn heartbeat_interval(&self) -> u64
Define how often a job should update its heartbeat timestamp
This is important for allowing the job server to reap processes that were started but never completed.