pub struct ReceivedMessage<T> {
pub message: Message<T>,
pub ack_handle: Arc<dyn AckHandle>,
}Expand description
Wrapper combining message data with acknowledgment capability.
This is what workers and middleware actually receive. It separates the pure message data from the acknowledgment operations, preventing circular dependencies while providing safe concurrent access.
§Example
use foxtive_worker::message::ReceivedMessage;
async fn process_message(received: ReceivedMessage<serde_json::Value>) {
// Access message data
println!("Processing message: {}", received.message.id);
// Process the message...
// Acknowledge on success
if let Err(e) = received.ack().await {
eprintln!("Failed to ack: {}", e);
}
}Fields§
§message: Message<T>The pure message data
ack_handle: Arc<dyn AckHandle>Backend-specific acknowledgment handle (using Arc for shareability)
Implementations§
Source§impl<T: Send + Sync> ReceivedMessage<T>
impl<T: Send + Sync> ReceivedMessage<T>
Sourcepub fn new(message: Message<T>, ack_handle: Arc<dyn AckHandle>) -> Self
pub fn new(message: Message<T>, ack_handle: Arc<dyn AckHandle>) -> Self
Create a new ReceivedMessage.
Sourcepub async fn ack(&self) -> WorkerResult<()>
pub async fn ack(&self) -> WorkerResult<()>
Acknowledge successful message processing.
Sourcepub async fn nack(&self, requeue: bool) -> WorkerResult<()>
pub async fn nack(&self, requeue: bool) -> WorkerResult<()>
Negative acknowledge message processing failure.
Sourcepub fn into_message(self) -> Message<T>
pub fn into_message(self) -> Message<T>
Extract the inner message, discarding the ack handle.
Source§impl ReceivedMessage<Value>
Specialized implementation for JSON messages
impl ReceivedMessage<Value>
Specialized implementation for JSON messages
Sourcepub async fn retry_with_delay(&self, delay_ms: u64) -> WorkerResult<()>
pub async fn retry_with_delay(&self, delay_ms: u64) -> WorkerResult<()>
Retry message with a delay (if supported by backend).
Sourcepub async fn send_to_dlq(&self, error_message: &str) -> WorkerResult<()>
pub async fn send_to_dlq(&self, error_message: &str) -> WorkerResult<()>
Send message to Dead Letter Queue after retries are exhausted.
Trait Implementations§
Auto Trait Implementations§
impl<T> !RefUnwindSafe for ReceivedMessage<T>
impl<T> !UnwindSafe for ReceivedMessage<T>
impl<T> Freeze for ReceivedMessage<T>where
T: Freeze,
impl<T> Send for ReceivedMessage<T>where
T: Send,
impl<T> Sync for ReceivedMessage<T>where
T: Sync,
impl<T> Unpin for ReceivedMessage<T>where
T: Unpin,
impl<T> UnsafeUnpin for ReceivedMessage<T>where
T: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more