pub struct DeduplicationConfig {
pub enabled: bool,
pub ttl: Duration,
pub strategy: DeduplicationStrategy,
pub redis_key_prefix: String,
pub max_retries: u32,
pub cleanup_interval: Duration,
}Expand description
Event deduplication configuration
Provides configuration for detecting and filtering duplicate events in the stream. When enabled, events are deduplicated based on their content hash using a Redis-backed bloom filter or exact matching store.
§Example
use processor::config::{DeduplicationConfig, DeduplicationStrategy};
use std::time::Duration;
let config = DeduplicationConfig {
enabled: true,
ttl: Duration::from_secs(3600),
strategy: DeduplicationStrategy::ContentHash,
redis_key_prefix: "dedup".to_string(),
max_retries: 3,
cleanup_interval: Duration::from_secs(300),
};Fields§
§enabled: boolEnable event deduplication
ttl: DurationTime-to-live for deduplication records Events with the same signature within this window are considered duplicates
strategy: DeduplicationStrategyDeduplication strategy to use
redis_key_prefix: StringRedis key prefix for deduplication storage
max_retries: u32Maximum number of retries for Redis operations
cleanup_interval: DurationInterval for cleanup of expired deduplication records
Implementations§
Source§impl DeduplicationConfig
impl DeduplicationConfig
Sourcepub fn with_strategy(self, strategy: DeduplicationStrategy) -> Self
pub fn with_strategy(self, strategy: DeduplicationStrategy) -> Self
Set the deduplication strategy
Sourcepub fn with_redis_key_prefix<S: Into<String>>(self, prefix: S) -> Self
pub fn with_redis_key_prefix<S: Into<String>>(self, prefix: S) -> Self
Set the Redis key prefix
Sourcepub fn with_max_retries(self, retries: u32) -> Self
pub fn with_max_retries(self, retries: u32) -> Self
Set maximum retries for Redis operations
Sourcepub fn with_cleanup_interval(self, interval: Duration) -> Self
pub fn with_cleanup_interval(self, interval: Duration) -> Self
Set cleanup interval
Sourcepub fn cleanup_interval_ms(&self) -> u64
pub fn cleanup_interval_ms(&self) -> u64
Get cleanup interval in milliseconds
Trait Implementations§
Source§impl Clone for DeduplicationConfig
impl Clone for DeduplicationConfig
Source§impl Debug for DeduplicationConfig
impl Debug for DeduplicationConfig
Source§impl Default for DeduplicationConfig
impl Default for DeduplicationConfig
Source§impl<'de> Deserialize<'de> for DeduplicationConfig
impl<'de> Deserialize<'de> for DeduplicationConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for DeduplicationConfig
impl RefUnwindSafe for DeduplicationConfig
impl Send for DeduplicationConfig
impl Sync for DeduplicationConfig
impl Unpin for DeduplicationConfig
impl UnsafeUnpin for DeduplicationConfig
impl UnwindSafe for DeduplicationConfig
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.