rabbitmq_worker/
error.rs

1
2use thiserror::Error;
3
4/// Generic error type for the RabbitMQ worker library.
5#[derive(Debug, Error)]
6pub enum WorkerError {
7    /// Error originating from the underlying `lapin` library.
8    #[error("RabbitMQ communication error: {0}")]
9    Lapin(#[from] lapin::Error),
10
11    /// Error during message deserialization.
12    #[error("Failed to deserialize message: {0}")]
13    Deserialization(#[from] serde_json::Error),
14
15    /// Custom messaging-related error.
16    #[error("Messaging setup or configuration error: {message}")]
17    MessagingError {
18        message: String,
19    },
20
21    /// Error from the message handler logic.
22    #[error("Message handler failed: {0}")]
23    HandlerError(#[from] Box<dyn std::error::Error + Send + Sync>),
24
25    /// A generic error for DLQ operations.
26    #[error("Dead letter queue operation failed: {0}")]
27    DlqError(String),
28}
29
30// Allow converting from a string-like type into a MessagingError
31impl From<&str> for WorkerError {
32    fn from(s: &str) -> Self {
33        WorkerError::MessagingError { message: s.to_string() }
34    }
35}
36
37impl From<String> for WorkerError {
38    fn from(s: String) -> Self {
39        WorkerError::MessagingError { message: s }
40    }
41}