1
2use thiserror::Error;
3
4#[derive(Debug, Error)]
6pub enum WorkerError {
7 #[error("RabbitMQ communication error: {0}")]
9 Lapin(#[from] lapin::Error),
10
11 #[error("Failed to deserialize message: {0}")]
13 Deserialization(#[from] serde_json::Error),
14
15 #[error("Messaging setup or configuration error: {message}")]
17 MessagingError {
18 message: String,
19 },
20
21 #[error("Message handler failed: {0}")]
23 HandlerError(#[from] Box<dyn std::error::Error + Send + Sync>),
24
25 #[error("Dead letter queue operation failed: {0}")]
27 DlqError(String),
28}
29
30impl 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}