#[derive(RingMessage)]
{
// Attributes available to this derive:
#[message]
#[ring_message]
}
Expand description
Derive macro for implementing the RingMessage trait.
§Attributes
On the struct (via #[message(...)] or #[ring_message(...)]):
type_id = 123- Set explicit message type ID (or domain offset if domain is set)domain = "OrderMatching"- Assign to a business domain (adds base type ID)k2k_routable = true- Register for K2K routing discoverycategory = "orders"- Group messages for K2K routing
On fields:
#[message(id)]- Mark as message ID field#[message(correlation)]- Mark as correlation ID field#[message(priority)]- Mark as priority field
§Examples
Basic usage:
ⓘ
#[derive(RingMessage)]
#[message(type_id = 1)]
struct MyMessage {
#[message(id)]
id: MessageId,
#[message(correlation)]
correlation: CorrelationId,
#[message(priority)]
priority: Priority,
payload: Vec<u8>,
}With domain (type ID = 500 + 1 = 501):
ⓘ
#[derive(RingMessage)]
#[ring_message(type_id = 1, domain = "OrderMatching")]
pub struct SubmitOrderInput {
#[message(id)]
id: MessageId,
pub order: Order,
}
// Also implements DomainMessage trait
assert_eq!(SubmitOrderInput::domain(), Domain::OrderMatching);K2K-routable message:
ⓘ
#[derive(RingMessage)]
#[ring_message(type_id = 1, domain = "OrderMatching", k2k_routable = true, category = "orders")]
pub struct SubmitOrderInput { ... }
// Runtime discovery:
let registry = K2KTypeRegistry::discover();
assert!(registry.is_routable(501));