Namespace Savvyio.Messaging
Transport-agnostic messaging in Savvy I/O revolves around Message<T>: a typed envelope that pairs a payload with a source URI, a type discriminator, and a unique message ID. The Savvyio.Messaging namespace provides this envelope, its options, and the async enumerable types for consuming message streams.
Start with Message<T> to create a message envelope around any command or integration event. MessageOptions configures the source and type metadata. MessageAsyncEnumerable<T> and MessageAsyncEnumerator<T> support async pull-based consumption from a queue or bus. Use IMessage<T>.Clone<T>() to duplicate a received message before re-processing or republishing it. For signed messages, see Savvyio.Messaging.Cryptography.
Availability: .NET 10 and .NET 9
Extension Members
| Type | Ext | Methods |
|---|---|---|
| IMessage |
⬇️ | Clone<T> |
Classes
Acknowledgeable
Provides a default implementation of the IAcknowledgeable interface.
AcknowledgedEventArgs
Provides data for message related operations.
MessageAsyncEnumerableOptions<T>
Configuration options that is related to IAcknowledgeable messages.
MessageAsyncEnumerable<T>
Exposes an enumerator that provides asynchronous iteration over values of a specified type.
MessageExtensions
Extension methods for the IMessage<T> interface.
MessageOptions
Configuration options that is related to wrapping an IRequest implementation inside a message.
Message<T>
Provides a default implementation of the IMessage<T> interface.
SubscribeAsyncOptions
Configuration options that is related to implementations of the ISubscriber<TRequest> interface.
Interfaces
IAcknowledgeable
Defines a generic way to make a message acknowledgeable.
IMessage<T>
Defines a generic way to wrap an IRequest inside a message.
IPointToPointChannel<TRequest>
Specifies an interface for a bus that is used for interacting with other subsystems (out-process/inter-application) to do something (e.g., change the state).
IPublishSubscribeChannel<TRequest>
Specifies an interface for a bus that is used for interacting with other subsystems (out-process/inter-application) to be notified (e.g., made aware of something that has happened).
IPublisher<TRequest>
Defines a publisher/sender channel for interacting with other subsystems (out-process/inter-application) to be notified (e.g., made aware of something that has happened).
IReceiver<TRequest>
Defines a consumer/receiver channel used by subsystems to receive a command and perform one or more actions (e.g., change the state).
ISender<TRequest>
Defines a producer/sender channel used for interacting with other subsystems (out-process/inter-application) to do something (e.g., change the state).
ISubscriber<TRequest>
Defines a subscriber/receiver channel used by subsystems to subscribe to messages (typically events) to be made aware of something that has happened.