Skip to main content

ReceivedMessage

Struct ReceivedMessage 

Source
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>

Source

pub fn new(message: Message<T>, ack_handle: Arc<dyn AckHandle>) -> Self

Create a new ReceivedMessage.

Source

pub async fn ack(&self) -> WorkerResult<()>

Acknowledge successful message processing.

Source

pub async fn nack(&self, requeue: bool) -> WorkerResult<()>

Negative acknowledge message processing failure.

Source

pub fn into_message(self) -> Message<T>

Extract the inner message, discarding the ack handle.

Source§

impl ReceivedMessage<Value>

Specialized implementation for JSON messages

Source

pub async fn retry_with_delay(&self, delay_ms: u64) -> WorkerResult<()>

Retry message with a delay (if supported by backend).

Source

pub async fn send_to_dlq(&self, error_message: &str) -> WorkerResult<()>

Send message to Dead Letter Queue after retries are exhausted.

Trait Implementations§

Source§

impl<T: Clone + Send + Sync> Clone for ReceivedMessage<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for ReceivedMessage<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more