pub struct Pipelined<Descriptor, Mode = Plain> { /* private fields */ }Expand description
A subscription source with a window, as the .pipeline() mount step makes it.
The descriptor is a RedisStream, a RedisList, a
RedisPubSub or a RedisPubSubPattern.
Mode is Plain until .atomic() makes it Atomic. A service does not build one: it
names the descriptor in #[subscriber(..)] and chains pipeline
where it mounts the handler. The type shows up in the builder’s type, under the names
RedisStreamPipeline and its siblings.
§Examples
use ruststream_fred::stream::prelude::*;
#[subscriber(RedisStream::new("orders").group("workers"))]
async fn record(order: &Order, Ctx(pipeline): Ctx<keys::Pipeline>) -> HandlerOutcome {
if pipeline.hset("orders:by-id", (order.id.to_string(), "seen")).await.is_err() {
return HandlerOutcome::retry();
}
HandlerOutcome::ack()
}
fn app() -> RustStream {
RustStream::new(AppInfo::new("orders", "0.1.0")).with_broker(
RedisBroker::standalone("redis://localhost:6379"),
|b| {
b.include(record.pipeline());
},
)
}Trait Implementations§
Source§impl<Mode: WindowMode> RedeliveryAddressed<ConnectedRedisBroker> for Pipelined<RedisStream, Mode>
impl<Mode: WindowMode> RedeliveryAddressed<ConnectedRedisBroker> for Pipelined<RedisStream, Mode>
Source§fn redelivery_address(
&self,
connected: &ConnectedRedisBroker,
) -> impl Future<Output = Result<RedeliveryAddress, RedisError>>
fn redelivery_address( &self, connected: &ConnectedRedisBroker, ) -> impl Future<Output = Result<RedeliveryAddress, RedisError>>
Where a publish reaches this subscription again. Read more
Source§impl<Mode: WindowMode> RedeliveryAddressed<ConnectedRedisBroker> for Pipelined<RedisList, Mode>
impl<Mode: WindowMode> RedeliveryAddressed<ConnectedRedisBroker> for Pipelined<RedisList, Mode>
Source§fn redelivery_address(
&self,
connected: &ConnectedRedisBroker,
) -> impl Future<Output = Result<RedeliveryAddress, RedisError>>
fn redelivery_address( &self, connected: &ConnectedRedisBroker, ) -> impl Future<Output = Result<RedeliveryAddress, RedisError>>
Where a publish reaches this subscription again. Read more
Source§impl<Mode: WindowMode> RedeliveryAddressed<ConnectedRedisBroker> for Pipelined<RedisPubSub, Mode>
impl<Mode: WindowMode> RedeliveryAddressed<ConnectedRedisBroker> for Pipelined<RedisPubSub, Mode>
Source§fn redelivery_address(
&self,
connected: &ConnectedRedisBroker,
) -> impl Future<Output = Result<RedeliveryAddress, RedisError>>
fn redelivery_address( &self, connected: &ConnectedRedisBroker, ) -> impl Future<Output = Result<RedeliveryAddress, RedisError>>
Where a publish reaches this subscription again. Read more
Source§impl<Mode: WindowMode> SubscriptionSource<ConnectedRedisBroker> for Pipelined<RedisStream, Mode>
impl<Mode: WindowMode> SubscriptionSource<ConnectedRedisBroker> for Pipelined<RedisStream, Mode>
Source§type Subscriber = PipelinedSubscriber<RedisSubscriber, StreamForm>
type Subscriber = PipelinedSubscriber<RedisSubscriber, StreamForm>
The subscriber type this source opens.
Source§type Copies = AddressedCopies
type Copies = AddressedCopies
Who publishes the copies this subscription’s retries are made of, and who names where they
go:
AddressedCopies, NamedCopies or BrokerMoves. Read moreSource§fn declare_retry(self, declaration: &RetryDeclaration) -> Self
fn declare_retry(self, declaration: &RetryDeclaration) -> Self
Takes the registration’s retry declaration into the descriptor, before the subscription
opens. Read more
Source§fn channel_bindings(&self) -> Bindings
fn channel_bindings(&self) -> Bindings
What this subscription adds to its channel in the generated
AsyncAPI document. Read moreSource§async fn subscribe(
self,
connected: &ConnectedRedisBroker,
) -> Result<Self::Subscriber, RedisError>
async fn subscribe( self, connected: &ConnectedRedisBroker, ) -> Result<Self::Subscriber, RedisError>
Opens the subscription against the connected broker. Called once at startup. Read more
Source§fn declare_retry_on(
&self,
connected: &C,
declaration: &RetryDeclaration,
) -> Result<(), DeclareRetryError>
fn declare_retry_on( &self, connected: &C, declaration: &RetryDeclaration, ) -> Result<(), DeclareRetryError>
Carries the registration’s declaration to the broker, at the same point and before the
subscription opens. Read more
Source§fn operation_bindings(&self) -> Bindings
fn operation_bindings(&self) -> Bindings
What this subscription adds to its
receive operation in the document. Read moreSource§fn message_bindings(&self) -> Bindings
fn message_bindings(&self) -> Bindings
What this subscription adds to the messages that arrive on it. Read more
Source§impl<Mode: WindowMode> SubscriptionSource<ConnectedRedisBroker> for Pipelined<RedisPubSub, Mode>
impl<Mode: WindowMode> SubscriptionSource<ConnectedRedisBroker> for Pipelined<RedisPubSub, Mode>
Source§type Subscriber = PipelinedSubscriber<ChannelReader, PubSubForm>
type Subscriber = PipelinedSubscriber<ChannelReader, PubSubForm>
The subscriber type this source opens.
Source§type Copies = AddressedCopies
type Copies = AddressedCopies
Who publishes the copies this subscription’s retries are made of, and who names where they
go:
AddressedCopies, NamedCopies or BrokerMoves. Read moreSource§fn declare_retry(self, declaration: &RetryDeclaration) -> Self
fn declare_retry(self, declaration: &RetryDeclaration) -> Self
Takes the registration’s retry declaration into the descriptor, before the subscription
opens. Read more
Source§fn channel_bindings(&self) -> Bindings
fn channel_bindings(&self) -> Bindings
What this subscription adds to its channel in the generated
AsyncAPI document. Read moreSource§async fn subscribe(
self,
connected: &ConnectedRedisBroker,
) -> Result<Self::Subscriber, RedisError>
async fn subscribe( self, connected: &ConnectedRedisBroker, ) -> Result<Self::Subscriber, RedisError>
Opens the subscription against the connected broker. Called once at startup. Read more
Source§fn declare_retry_on(
&self,
connected: &C,
declaration: &RetryDeclaration,
) -> Result<(), DeclareRetryError>
fn declare_retry_on( &self, connected: &C, declaration: &RetryDeclaration, ) -> Result<(), DeclareRetryError>
Carries the registration’s declaration to the broker, at the same point and before the
subscription opens. Read more
Source§fn operation_bindings(&self) -> Bindings
fn operation_bindings(&self) -> Bindings
What this subscription adds to its
receive operation in the document. Read moreSource§fn message_bindings(&self) -> Bindings
fn message_bindings(&self) -> Bindings
What this subscription adds to the messages that arrive on it. Read more
Source§impl<Mode: WindowMode> SubscriptionSource<ConnectedRedisBroker> for Pipelined<RedisPubSubPattern, Mode>
A pattern reads every channel its glob matches and names none a publish could reach, so the
mount site names where a retry copy goes, as on the pattern subscription without a window.
impl<Mode: WindowMode> SubscriptionSource<ConnectedRedisBroker> for Pipelined<RedisPubSubPattern, Mode>
A pattern reads every channel its glob matches and names none a publish could reach, so the mount site names where a retry copy goes, as on the pattern subscription without a window.
Source§type Subscriber = PipelinedSubscriber<ChannelReader, PubSubForm>
type Subscriber = PipelinedSubscriber<ChannelReader, PubSubForm>
The subscriber type this source opens.
Source§type Copies = NamedCopies
type Copies = NamedCopies
Who publishes the copies this subscription’s retries are made of, and who names where they
go:
AddressedCopies, NamedCopies or BrokerMoves. Read moreSource§async fn subscribe(
self,
connected: &ConnectedRedisBroker,
) -> Result<Self::Subscriber, RedisError>
async fn subscribe( self, connected: &ConnectedRedisBroker, ) -> Result<Self::Subscriber, RedisError>
Opens the subscription against the connected broker. Called once at startup. Read more
Source§fn channel_bindings(&self) -> Bindings
fn channel_bindings(&self) -> Bindings
What this subscription adds to its channel in the generated
AsyncAPI document. Read moreSource§fn declare_retry(self, declaration: &RetryDeclaration) -> Selfwhere
Self: Sized,
fn declare_retry(self, declaration: &RetryDeclaration) -> Selfwhere
Self: Sized,
Takes the registration’s retry declaration into the descriptor, before the subscription
opens. Read more
Source§fn declare_retry_on(
&self,
connected: &C,
declaration: &RetryDeclaration,
) -> Result<(), DeclareRetryError>
fn declare_retry_on( &self, connected: &C, declaration: &RetryDeclaration, ) -> Result<(), DeclareRetryError>
Carries the registration’s declaration to the broker, at the same point and before the
subscription opens. Read more
Source§fn operation_bindings(&self) -> Bindings
fn operation_bindings(&self) -> Bindings
What this subscription adds to its
receive operation in the document. Read moreSource§fn message_bindings(&self) -> Bindings
fn message_bindings(&self) -> Bindings
What this subscription adds to the messages that arrive on it. Read more
Source§impl<Mode: WindowMode> SubscriptionSource<ConnectedRedisBroker> for Pipelined<RedisList, Mode>
impl<Mode: WindowMode> SubscriptionSource<ConnectedRedisBroker> for Pipelined<RedisList, Mode>
Source§type Subscriber = PipelinedSubscriber<ListReader, ListForm>
type Subscriber = PipelinedSubscriber<ListReader, ListForm>
The subscriber type this source opens.
Source§type Copies = AddressedCopies
type Copies = AddressedCopies
Who publishes the copies this subscription’s retries are made of, and who names where they
go:
AddressedCopies, NamedCopies or BrokerMoves. Read moreSource§fn declare_retry(self, declaration: &RetryDeclaration) -> Self
fn declare_retry(self, declaration: &RetryDeclaration) -> Self
Takes the registration’s retry declaration into the descriptor, before the subscription
opens. Read more
Source§fn channel_bindings(&self) -> Bindings
fn channel_bindings(&self) -> Bindings
What this subscription adds to its channel in the generated
AsyncAPI document. Read moreSource§async fn subscribe(
self,
connected: &ConnectedRedisBroker,
) -> Result<Self::Subscriber, RedisError>
async fn subscribe( self, connected: &ConnectedRedisBroker, ) -> Result<Self::Subscriber, RedisError>
Opens the subscription against the connected broker. Called once at startup. Read more
Source§fn declare_retry_on(
&self,
connected: &C,
declaration: &RetryDeclaration,
) -> Result<(), DeclareRetryError>
fn declare_retry_on( &self, connected: &C, declaration: &RetryDeclaration, ) -> Result<(), DeclareRetryError>
Carries the registration’s declaration to the broker, at the same point and before the
subscription opens. Read more
Source§fn operation_bindings(&self) -> Bindings
fn operation_bindings(&self) -> Bindings
What this subscription adds to its
receive operation in the document. Read moreSource§fn message_bindings(&self) -> Bindings
fn message_bindings(&self) -> Bindings
What this subscription adds to the messages that arrive on it. Read more
Auto Trait Implementations§
impl<Descriptor, Mode> Freeze for Pipelined<Descriptor, Mode>
impl<Descriptor, Mode> RefUnwindSafe for Pipelined<Descriptor, Mode>
impl<Descriptor, Mode> Send for Pipelined<Descriptor, Mode>
impl<Descriptor, Mode> Sync for Pipelined<Descriptor, Mode>
impl<Descriptor, Mode> Unpin for Pipelined<Descriptor, Mode>
impl<Descriptor, Mode> UnsafeUnpin for Pipelined<Descriptor, Mode>
impl<Descriptor, Mode> UnwindSafe for Pipelined<Descriptor, Mode>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more