Skip to main content

ErrorClassificationMiddleware

Struct ErrorClassificationMiddleware 

Source
pub struct ErrorClassificationMiddleware { /* private fields */ }
Expand description

Error classification middleware for intelligent error routing

This middleware classifies errors into categories and can route messages to different queues based on error type (e.g., transient vs permanent errors).

§Examples

use celers_kombu::ErrorClassificationMiddleware;

let classifier = ErrorClassificationMiddleware::new()
    .with_transient_pattern("timeout|connection")
    .with_permanent_pattern("validation|schema")
    .with_max_transient_retries(5);

Implementations§

Source§

impl ErrorClassificationMiddleware

Source

pub fn new() -> Self

Create a new error classification middleware

Source

pub fn with_transient_pattern(self, pattern: &str) -> Self

Add a pattern for transient errors (can be retried)

Source

pub fn with_permanent_pattern(self, pattern: &str) -> Self

Add a pattern for permanent errors (should not be retried)

Source

pub fn with_max_transient_retries(self, max_retries: u32) -> Self

Set maximum retries for transient errors

Source

pub fn with_max_permanent_retries(self, max_retries: u32) -> Self

Set maximum retries for permanent errors

Source

pub fn classify_error(&self, error_msg: &str) -> ErrorClass

Classify an error message

Source

pub fn should_retry(&self, error_msg: &str, current_retries: u32) -> bool

Determine if a message should be retried based on error classification

Trait Implementations§

Source§

impl Default for ErrorClassificationMiddleware

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl MessageMiddleware for ErrorClassificationMiddleware

Source§

fn before_publish<'life0, 'life1, 'async_trait>( &'life0 self, message: &'life1 mut Message, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Process message before publishing
Source§

fn after_consume<'life0, 'life1, 'async_trait>( &'life0 self, _message: &'life1 mut Message, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Process message after consuming
Source§

fn name(&self) -> &str

Get middleware name for logging

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.