///| Message[T] represents a wrapper for data sent through the queue.
pub struct Message[T] {
///| id is a unique identifier assigned by the backend.
id : String
///| payload is the generic data contained in the message.
payload : T
///| attempt_count tracks how many times this message has been handled (useful for retries).
mut attempt_count : Int
}
///| new creates a new message.
pub fn[T] Message::new(id : String, payload : T, attempt_count~ : Int = 0) -> Message[T] {
{ id: id, payload: payload, attempt_count: attempt_count }
}