pub struct CustomBackend<Args, DB, Fetch, Sink, IdType, Codec = IdentityCodec, Config = ()> { /* private fields */ }Expand description
A highly customizable backend for integration with any persistence engine
This backend allows you to define how tasks are fetched from and persisted to your storage, meaning you can use it to integrate with existing systems.
§Example
ⓘ
let backend = BackendBuilder::new()
.database(my_db)
.fetcher(my_fetcher_fn)
.sink(my_sink_fn)
.build()
.unwrap();§Features
| Feature | Status | Description |
|---|---|---|
TaskSink | ✅ | Ability to push new tasks |
Serialization | ✅ | Serialization support for arguments |
FetchById | ❌ | Allow fetching a task by its ID |
RegisterWorker | ⚠️ | Allow registering a worker with the backend |
PipeExt | ✅ ❗ | Allow other backends to pipe to this backend |
MakeShared | ⚠️ | Share the same CustomBackend across multiple workers |
Workflow | ⚠️ | Flexible enough to support workflows |
WaitForCompletion | ⚠️ | Wait for tasks to complete without blocking |
ResumeById | ❌ | Resume a task by its ID |
ResumeAbandoned | ❌ | Resume abandoned tasks |
ListWorkers | ⚠️ | List all workers registered with the backend |
ListTasks | ⚠️ | List all tasks in the backend |
Key: ✅ : Supported | ⚠️ : Not implemented | ❌ : Not Supported | ❗ Limited support
Examples:
Trait Implementations§
Source§impl<Args, DB, Fetch, Sink, IdType: Clone, E, Ctx: Default, Encode, Config> Backend<Args> for CustomBackend<Args, DB, Fetch, Sink, IdType, Encode, Config>
impl<Args, DB, Fetch, Sink, IdType: Clone, E, Ctx: Default, Encode, Config> Backend<Args> for CustomBackend<Args, DB, Fetch, Sink, IdType, Encode, Config>
Source§type Stream = Pin<Box<dyn Stream<Item = Result<Option<Task<Args, Ctx, IdType>>, Box<dyn Error + Sync + Send>>> + Send>>
type Stream = Pin<Box<dyn Stream<Item = Result<Option<Task<Args, Ctx, IdType>>, Box<dyn Error + Sync + Send>>> + Send>>
A stream of tasks provided by the backend.
Source§type Beat = Pin<Box<dyn Stream<Item = Result<(), <CustomBackend<Args, DB, Fetch, Sink, IdType, Encode, Config> as Backend<Args>>::Error>> + Send>>
type Beat = Pin<Box<dyn Stream<Item = Result<(), <CustomBackend<Args, DB, Fetch, Sink, IdType, Encode, Config> as Backend<Args>>::Error>> + Send>>
A stream representing heartbeat signals.
Source§fn heartbeat(&self, _: &WorkerContext) -> Self::Beat
fn heartbeat(&self, _: &WorkerContext) -> Self::Beat
Returns a heartbeat stream for the given worker.
Source§fn middleware(&self) -> Self::Layer
fn middleware(&self) -> Self::Layer
Returns the backend’s middleware layer.
Source§fn poll(self, worker: &WorkerContext) -> Self::Stream
fn poll(self, worker: &WorkerContext) -> Self::Stream
Polls the backend for tasks for the given worker.
Source§impl<Args, DB, Fetch, Sink, IdType, Codec, Config> Clone for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
impl<Args, DB, Fetch, Sink, IdType, Codec, Config> Clone for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
Source§impl<Args, DB, Fetch, Sink, IdType, Codec, Config> Debug for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
impl<Args, DB, Fetch, Sink, IdType, Codec, Config> Debug for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
Source§impl<Args, Ctx, IdType, DB, Fetch, S, Codec, Config> Sink<Task<Args, Ctx, IdType>> for CustomBackend<Args, DB, Fetch, S, IdType, Codec, Config>
impl<Args, Ctx, IdType, DB, Fetch, S, Codec, Config> Sink<Task<Args, Ctx, IdType>> for CustomBackend<Args, DB, Fetch, S, IdType, Codec, Config>
Source§type Error = <S as Sink<Task<Args, Ctx, IdType>>>::Error
type Error = <S as Sink<Task<Args, Ctx, IdType>>>::Error
The type of value produced by the sink when an error occurs.
Source§fn poll_ready(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>>
fn poll_ready( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>
Attempts to prepare the
Sink to receive a value. Read moreSource§fn start_send(
self: Pin<&mut Self>,
item: Task<Args, Ctx, IdType>,
) -> Result<(), Self::Error>
fn start_send( self: Pin<&mut Self>, item: Task<Args, Ctx, IdType>, ) -> Result<(), Self::Error>
Begin the process of sending a value to the sink.
Each call to this function must be preceded by a successful call to
poll_ready which returned Poll::Ready(Ok(())). Read moreimpl<'pin, Args, DB, Fetch, Sink, IdType, Codec, Config> Unpin for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>where
PinnedFieldsOf<__CustomBackend<'pin, Args, DB, Fetch, Sink, IdType, Codec, Config>>: Unpin,
Auto Trait Implementations§
impl<Args, DB, Fetch, Sink, IdType, Codec, Config> Freeze for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
impl<Args, DB, Fetch, Sink, IdType, Codec = IdentityCodec, Config = ()> !RefUnwindSafe for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
impl<Args, DB, Fetch, Sink, IdType, Codec, Config> Send for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
impl<Args, DB, Fetch, Sink, IdType, Codec, Config> Sync for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
impl<Args, DB, Fetch, Sink, IdType, Codec = IdentityCodec, Config = ()> !UnwindSafe for CustomBackend<Args, DB, Fetch, Sink, IdType, Codec, Config>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, Item> SinkExt<Item> for T
impl<T, Item> SinkExt<Item> for T
Source§fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F>
fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F>
Composes a function in front of the sink. Read more
Source§fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F>
fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F>
Composes a function in front of the sink. Read more
Source§fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F>
fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F>
Transforms the error returned by the sink.
Source§fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E>
fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E>
Map this sink’s error to a different error type using the
Into trait. Read moreSource§fn buffer(self, capacity: usize) -> Buffer<Self, Item>where
Self: Sized,
fn buffer(self, capacity: usize) -> Buffer<Self, Item>where
Self: Sized,
Adds a fixed-size buffer to the current sink. Read more
Source§fn flush(&mut self) -> Flush<'_, Self, Item>where
Self: Unpin,
fn flush(&mut self) -> Flush<'_, Self, Item>where
Self: Unpin,
Flush the sink, processing all pending items. Read more
Source§fn send(&mut self, item: Item) -> Send<'_, Self, Item>where
Self: Unpin,
fn send(&mut self, item: Item) -> Send<'_, Self, Item>where
Self: Unpin,
A future that completes after the given item has been fully processed
into the sink, including flushing. Read more
Source§fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>where
Self: Unpin,
fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>where
Self: Unpin,
A future that completes after the given item has been received
by the sink. Read more
Source§fn send_all<'a, St>(&'a mut self, stream: &'a mut St) -> SendAll<'a, Self, St>
fn send_all<'a, St>(&'a mut self, stream: &'a mut St) -> SendAll<'a, Self, St>
A future that completes after the given stream has been fully processed
into the sink, including flushing. Read more
Source§fn right_sink<Si1>(self) -> Either<Si1, Self>
fn right_sink<Si1>(self) -> Either<Si1, Self>
Source§fn poll_ready_unpin(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>>where
Self: Unpin,
fn poll_ready_unpin(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>>where
Self: Unpin,
A convenience method for calling
Sink::poll_ready on Unpin
sink types.Source§fn start_send_unpin(&mut self, item: Item) -> Result<(), Self::Error>where
Self: Unpin,
fn start_send_unpin(&mut self, item: Item) -> Result<(), Self::Error>where
Self: Unpin,
A convenience method for calling
Sink::start_send on Unpin
sink types.