#[derive(Debug, thiserror::Error)]
pub enum BroccoliError {
#[error("Broker error: {0}")]
Broker(String),
#[error("Failed to publish message: {0}")]
Publish(String),
#[error("Failed to consume message: {0}")]
Consume(String),
#[error("Failed to acknowledge message: {0}")]
Acknowledge(String),
#[error("Failed to reject message: {0}")]
Reject(String),
#[error("Failed to cancel message: {0}")]
Cancel(String),
#[error("Failed to get message position: {0}")]
GetMessagePosition(String),
#[error("Serialization error: {0}")]
Serialization(#[from] serde_json::Error),
#[cfg(feature = "redis")]
#[error("Redis error: {0}")]
Redis(#[from] redis::RedisError),
#[error("Job error: {0}")]
Job(String),
#[error("Queue status error: {0}")]
QueueStatus(String),
#[error("Connection timeout after {0} retries")]
ConnectionTimeout(u32),
#[error("Feature not implemented")]
NotImplemented,
}