pub struct ConsumerGroup;Expand description
Reads the consumer group off a stream context, per delivery or per batch.
§Examples
use ruststream_fred::stream::prelude::*;
use serde::Deserialize;
#[derive(Deserialize)]
struct Order {
id: u64,
}
#[subscriber(RedisStream::new("orders").group("workers"))]
async fn handle(order: &Order, ctx: &mut Context<'_, StreamContext>) -> HandlerOutcome {
// The entry id reads like `1700000000000-0`.
tracing::info!(
order.id,
entry = %ctx.context(keys::EntryId),
group = %ctx.context(keys::ConsumerGroup),
"read"
);
HandlerOutcome::ack()
}
#[ruststream::app]
fn app() -> impl App {
RustStream::new(AppInfo::new("orders", "0.1.0")).with_broker(
RedisBroker::standalone("redis://localhost:6379"),
|b| {
b.include(handle);
},
)
}Trait Implementations§
Source§impl Clone for ConsumerGroup
impl Clone for ConsumerGroup
Source§impl ContextField for ConsumerGroup
impl ContextField for ConsumerGroup
Source§type Context = StreamContext
type Context = StreamContext
The per-delivery context type this key reads from.
Source§fn read(self, src: &StreamContext) -> String
fn read(self, src: &StreamContext) -> String
Reads this key’s field out of
src. Named apart from Field::get so a key
implementing both traits stays unambiguous to call.impl Copy for ConsumerGroup
Source§impl Debug for ConsumerGroup
impl Debug for ConsumerGroup
Source§impl Default for ConsumerGroup
impl Default for ConsumerGroup
impl Eq for ConsumerGroup
Source§impl Field<StreamBatchContext> for ConsumerGroup
impl Field<StreamBatchContext> for ConsumerGroup
Source§impl Field<StreamContext> for ConsumerGroup
impl Field<StreamContext> for ConsumerGroup
Source§impl Hash for ConsumerGroup
impl Hash for ConsumerGroup
Source§impl PartialEq for ConsumerGroup
impl PartialEq for ConsumerGroup
impl StructuralPartialEq for ConsumerGroup
Auto Trait Implementations§
impl Freeze for ConsumerGroup
impl RefUnwindSafe for ConsumerGroup
impl Send for ConsumerGroup
impl Sync for ConsumerGroup
impl Unpin for ConsumerGroup
impl UnsafeUnpin for ConsumerGroup
impl UnwindSafe for ConsumerGroup
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<K> CtxKey for Kwhere
K: ContextField,
impl<K> CtxKey for Kwhere
K: ContextField,
Source§type Value = <K as ContextField>::Value
type Value = <K as ContextField>::Value
The owned value the extractor binds.
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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