pub struct WebhookRecordSink { /* private fields */ }Expand description
The webhook batch sink (DW-121, analytics_stream.sink.webhook):
one POST per flushed batch, body the NDJSON lines, media type
application/x-ndjson, delivered through the shared DW-044 engine
(one total timeout per batch, exponential backoff, the transient
status set — see events::webhook for the contract).
Implementations§
Source§impl WebhookRecordSink
impl WebhookRecordSink
Sourcepub fn compile(
cfg: &AnalyticsStreamWebhook,
obs: Arc<Observability>,
ssrf_filter: SsrfFilter,
) -> Result<Self, String>
pub fn compile( cfg: &AnalyticsStreamWebhook, obs: Arc<Observability>, ssrf_filter: SsrfFilter, ) -> Result<Self, String>
Compile the sink from its config block: URL decomposition and
secret-reference header resolution through the same
WebhookTarget bottom the alert deliverer uses, so the two
pipelines cannot drift on URL, header, or retry semantics.
Fails with a log-safe message (the caller skips the sink
loudly, fail closed — the same compile-time backstop as alert
webhook targets).
Trait Implementations§
Source§impl Debug for WebhookRecordSink
impl Debug for WebhookRecordSink
Source§impl RecordSink for WebhookRecordSink
impl RecordSink for WebhookRecordSink
Source§fn deliver_batch<'life0, 'async_trait>(
&'life0 self,
batch: Bytes,
records: usize,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn deliver_batch<'life0, 'async_trait>(
&'life0 self,
batch: Bytes,
records: usize,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Deliver one flushed NDJSON batch of
records lines. Returns
whether the batch was accepted (2xx on some attempt for the
webhook sink) — the flusher only logs; outcome counting is the
implementation’s, in the metric family it owns.Auto Trait Implementations§
impl Freeze for WebhookRecordSink
impl !RefUnwindSafe for WebhookRecordSink
impl Send for WebhookRecordSink
impl Sync for WebhookRecordSink
impl Unpin for WebhookRecordSink
impl !UnwindSafe for WebhookRecordSink
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,
Attempts to downcast this to
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,
Attempts to downcast this to
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,
Attempts to downcast this to
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,
Attempts to downcast this to
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,
Attempts to downcast this to
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Attempts to downcast owned
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
Mutably borrows from an owned value. Read more
§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>
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> Pointable for T
impl<T> Pointable for T
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more