pub enum AnalyticsStreamSink {
Webhook(AnalyticsStreamWebhook),
Kafka(AnalyticsStreamKafka),
}Expand description
The access-record stream’s sink (DW-121,
gateway.analytics_stream.sink). Closed set, internally tagged
(type: webhook or type: kafka): webhook ships today; kafka
(SCALE-08, #187) produces NDJSON batches to a Kafka topic via a
Kafka REST Proxy (HTTP-based, no native client dependency). The
variant payloads carry their own deny_unknown_fields, so a
misspelled knob inside a sink is still a rejected config.
Variants§
Webhook(AnalyticsStreamWebhook)
POST each flushed batch as one NDJSON body (one JSON object per line, one line per record) to the configured URL, reusing the DW-044 webhook delivery engine’s retry/budget shape — one delivery (with its retries) per batch.
Kafka(AnalyticsStreamKafka)
Produce each flushed batch as NDJSON messages to a Kafka topic
via a Kafka REST Proxy (SCALE-08, #187). The REST Proxy
endpoint receives the batch as an HTTP POST with the
Content-Type: application/vnd.kafka.binary.v2+json media
type; each NDJSON line becomes a Kafka message value (base64
encoded per the REST Proxy spec). TLS is via https://; SASL
auth is via headers. This avoids the native rdkafka
dependency while providing a production-usable Kafka
integration.
Trait Implementations§
Source§impl Clone for AnalyticsStreamSink
impl Clone for AnalyticsStreamSink
Source§fn clone(&self) -> AnalyticsStreamSink
fn clone(&self) -> AnalyticsStreamSink
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AnalyticsStreamSink
impl Debug for AnalyticsStreamSink
Source§impl<'de> Deserialize<'de> for AnalyticsStreamSink
impl<'de> Deserialize<'de> for AnalyticsStreamSink
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>,
Source§impl JsonSchema for AnalyticsStreamSink
impl JsonSchema for AnalyticsStreamSink
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for AnalyticsStreamSink
impl PartialEq for AnalyticsStreamSink
Source§impl Serialize for AnalyticsStreamSink
impl Serialize for AnalyticsStreamSink
impl StructuralPartialEq for AnalyticsStreamSink
Auto Trait Implementations§
impl Freeze for AnalyticsStreamSink
impl RefUnwindSafe for AnalyticsStreamSink
impl Send for AnalyticsStreamSink
impl Sync for AnalyticsStreamSink
impl Unpin for AnalyticsStreamSink
impl UnwindSafe for AnalyticsStreamSink
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§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>
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