pub struct EosReplies;Expand description
The PublishTransform relaying EOS_SOURCE_HEADER from the originating delivery onto
the reply, so the pipeline’s Publisher impl can pair the reply with its consumed offset.
A replying handler over an exactly-once pipeline names it as the mount site’s
transform step, right after the policy:
b.include(enrich).out_reply(KafkaEosPublish::new("enrich-1")).transform(EosReplies). Every
reply then joins the pipeline’s open window paired with its delivery’s consumed offset,
making the publishing-handler form exactly-once end to end - the handler just returns the
value. The chain takes the codec the same way, with a .codec(..) step.
This works only for subscriptions in Commit::Transactional mode naming that pipeline’s id
(they are what stamps the source coordinates being relayed); a reply from any other
subscription fails with a clear error. The retry_after deferred-republish fallback does not
apply to these replies either: a delayed copy would break the offset-record pairing.
Generic over the handler’s context type, so bare handlers (no ctx parameter, no Ctx
extractors) work.
Trait Implementations§
Source§impl Clone for EosReplies
impl Clone for EosReplies
impl Copy for EosReplies
Source§impl Debug for EosReplies
impl Debug for EosReplies
Source§impl Default for EosReplies
impl Default for EosReplies
Source§impl<C, Options> PublishTransform<ForReply<C>, Options> for EosReplies
impl<C, Options> PublishTransform<ForReply<C>, Options> for EosReplies
Auto Trait Implementations§
impl Freeze for EosReplies
impl RefUnwindSafe for EosReplies
impl Send for EosReplies
impl Sync for EosReplies
impl Unpin for EosReplies
impl UnsafeUnpin for EosReplies
impl UnwindSafe for EosReplies
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
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> ⓘ
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> ⓘ
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