Table of Contents

Namespace Savvyio.Messaging

Assembly: Savvyio.Core.dll

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.