MassTransitEnvelope

Struct MassTransitEnvelope 

Source
pub struct MassTransitEnvelope {
    pub message_id: Option<String>,
    pub correlation_id: Option<String>,
    pub source_address: Option<String>,
    pub destination_address: Option<String>,
    pub sent_time: Option<DateTime<Utc>>,
    pub message_type: Option<Vec<String>>,
    pub headers: Option<HashMap<String, Value>>,
    pub message: Value,
}
Expand description

MassTransit message envelope format (C# camelCase JSON)

This structure matches MassTransit’s message envelope format for integration with C# services using MassTransit’s IBus.

MassTransit wraps messages in this format when publishing via IBus. The actual message payload is in the message field.

According to MassTransit documentation, messageType should be an array of URNs in the format: “urn:message:Namespace:TypeName”

Fields§

§message_id: Option<String>

Auto-generated message ID (Guid in C#)

§correlation_id: Option<String>

Correlation ID for tracking operations (Guid? in C#)

§source_address: Option<String>

Source address (Uri in C#)

§destination_address: Option<String>

Destination address (Uri in C#)

§sent_time: Option<DateTime<Utc>>

Sent time (DateTime? in C#)

§message_type: Option<Vec<String>>

Message type array - array of URNs in format “urn:message:Namespace:TypeName” This is required for MassTransit to properly route messages

§headers: Option<HashMap<String, Value>>

Headers (Dictionary<string, object> in C#)

§message: Value

The actual message payload (this is what we care about) MassTransit wraps the actual message in this field

Implementations§

Source§

impl MassTransitEnvelope

Source

pub fn new<T>(message: &T) -> Result<Self, Error>
where T: Serialize,

Create a new MassTransit envelope with a message payload This automatically generates a message ID (Guid format) and sets sent_time

Source

pub fn with_message_type<T>( message: &T, message_type: &str, ) -> Result<Self, Error>
where T: Serialize,

Create a MassTransit envelope with message type for proper routing MassTransit uses message type names for routing (e.g., “YourNamespace:YourMessageType”) The message type will be added as an array in the envelope body AND in headers for full compatibility

Message type can be in format:

  • “Namespace:TypeName” (will be converted to “urn:message:Namespace:TypeName”)
  • “urn:message:Namespace:TypeName” (used as-is)
Source

pub fn with_correlation_id(self, correlation_id: impl Into<String>) -> Self

Set correlation ID for tracking operations

Source

pub fn with_source_address(self, source_address: impl Into<String>) -> Self

Set source address (typically “rabbitmq://host/exchange”)

Source

pub fn with_destination_address( self, destination_address: impl Into<String>, ) -> Self

Set destination address (typically “rabbitmq://host/queue”)

Source

pub fn with_header(self, key: impl Into<String>, value: Value) -> Self

Add custom header

Source

pub fn with_message_type_header(self, message_type: &str) -> Self

Set message type in envelope body and headers (required for MassTransit routing) MassTransit expects message types as an array in both envelope body and MT-Host-MessageType header Message type can be in format “Namespace:TypeName” or “urn:message:Namespace:TypeName”

Source

pub fn extract_message<T>(&self) -> Result<T, Error>
where T: for<'de> Deserialize<'de>,

Extract the actual message payload as the specified type

Source

pub fn correlation_id(&self) -> Option<&str>

Get correlation ID if present

Source

pub fn message_id(&self) -> Option<&str>

Get message ID if present

Source

pub fn from_slice(bytes: &[u8]) -> Result<Self, Error>

Try to deserialize a MassTransit envelope from JSON bytes

Trait Implementations§

Source§

impl Clone for MassTransitEnvelope

Source§

fn clone(&self) -> MassTransitEnvelope

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for MassTransitEnvelope

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for MassTransitEnvelope

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for MassTransitEnvelope

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,