Struct DeduplicationCache
pub struct DeduplicationCache {
seen: HashMap<u64, Instant>,
order: VecDeque<(u64, Instant)>,
config: DeduplicationConfig,
duplicates_detected: u64,
total_checked: u64,
}Expand description
Deduplication cache for K2K message processing.
Tracks recently-seen message IDs to prevent duplicate processing. Uses a bounded LRU-style eviction with TTL expiry.
Fields§
§seen: HashMap<u64, Instant>§order: VecDeque<(u64, Instant)>§config: DeduplicationConfig§duplicates_detected: u64§total_checked: u64Implementations§
§impl DeduplicationCache
impl DeduplicationCache
pub fn new(config: DeduplicationConfig) -> DeduplicationCache
pub fn new(config: DeduplicationConfig) -> DeduplicationCache
Create a new deduplication cache.
pub fn is_duplicate(&mut self, idempotency_key: u64) -> bool
pub fn is_duplicate(&mut self, idempotency_key: u64) -> bool
Check if a message ID is a duplicate. If not, records it.
Returns true if this message was already seen (duplicate).
Returns false if this is the first time (not duplicate, now recorded).
pub fn clear(&mut self)
pub fn clear(&mut self)
Clear the cache.
pub fn metrics(&self) -> DeduplicationMetrics
pub fn metrics(&self) -> DeduplicationMetrics
Get deduplication metrics.
Auto Trait Implementations§
impl Freeze for DeduplicationCache
impl RefUnwindSafe for DeduplicationCache
impl Send for DeduplicationCache
impl Sync for DeduplicationCache
impl Unpin for DeduplicationCache
impl UnwindSafe for DeduplicationCache
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.