pub enum KinesisPosition {
Horizon,
Latest,
Timestamp(u64),
Sequence {
shard: String,
sequence: String,
},
}Expand description
A position in the stream’s retained log: the whole start vocabulary of this broker,
accepted by Seeker::seek and by the start_at(..) clause of
#[subscriber(..)].
Repositioning resets the checkpoint bookkeeping of every shard it moves: acknowledgements of records delivered before the seek stop advancing the watermark, so a stale checkpoint cannot drag the cursor back over the position just taken. Records from the new position onward are delivered again, which at-least-once permits.
Without a position a subscription resumes from the stored checkpoint of each shard, and starts at the tip on a shard that has none.
§Examples
use ruststream_kinesis::KinesisPosition;
// Every retained record on every shard, replayed from the trim horizon.
let backlog = KinesisPosition::horizon();Variants§
Horizon
The trim horizon: everything the stream still retains.
Stream-wide - it applies to every shard of the subscription, including shards discovered later (the children of a split or merge).
Latest
The tip: only records published after the reposition.
Stream-wide, and the position a shard without a checkpoint starts at by default.
Timestamp(u64)
The first record at or after this timestamp, in milliseconds since the Unix epoch.
Stream-wide; each shard opens at its own first record from that instant.
Sequence
Exactly one record on one shard.
This is the pinned form the framework defines for captured positions
(Positioned::position): seeking to one redelivers that very record. It addresses a
single shard, so it moves that shard’s reader only, the way a partitioned log seeks
per partition, and the shard must be owned and live.
Implementations§
Source§impl KinesisPosition
impl KinesisPosition
Sourcepub const fn horizon() -> Self
pub const fn horizon() -> Self
The trim horizon, for every shard: see KinesisPosition::Horizon.
Sourcepub const fn latest() -> Self
pub const fn latest() -> Self
The tip, for every shard: see KinesisPosition::Latest.
Sourcepub const fn timestamp(millis: u64) -> Self
pub const fn timestamp(millis: u64) -> Self
A wall-clock instant (milliseconds since the Unix epoch), for every shard: see
KinesisPosition::Timestamp.
Sourcepub fn sequence(shard: impl Into<String>, sequence: impl Into<String>) -> Self
pub fn sequence(shard: impl Into<String>, sequence: impl Into<String>) -> Self
One record on one shard: see KinesisPosition::Sequence.
Captured positions come from Positioned::position; this constructor is for a
sequence number carried in from elsewhere (an operator’s replay request, say).
Trait Implementations§
Source§impl Clone for KinesisPosition
impl Clone for KinesisPosition
Source§fn clone(&self) -> KinesisPosition
fn clone(&self) -> KinesisPosition
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for KinesisPosition
impl Debug for KinesisPosition
impl Eq for KinesisPosition
Source§impl PartialEq for KinesisPosition
impl PartialEq for KinesisPosition
impl StructuralPartialEq for KinesisPosition
Auto Trait Implementations§
impl Freeze for KinesisPosition
impl RefUnwindSafe for KinesisPosition
impl Send for KinesisPosition
impl Sync for KinesisPosition
impl Unpin for KinesisPosition
impl UnsafeUnpin for KinesisPosition
impl UnwindSafe for KinesisPosition
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,
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
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>
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