Savvyio.Messaging Namespace
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.