Cirreum.Messaging 1.0.109

dotnet add package Cirreum.Messaging --version 1.0.109
                    
NuGet\Install-Package Cirreum.Messaging -Version 1.0.109
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Cirreum.Messaging" Version="1.0.109" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cirreum.Messaging" Version="1.0.109" />
                    
Directory.Packages.props
<PackageReference Include="Cirreum.Messaging" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Cirreum.Messaging --version 1.0.109
                    
#r "nuget: Cirreum.Messaging, 1.0.109"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Cirreum.Messaging@1.0.109
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Cirreum.Messaging&version=1.0.109
                    
Install as a Cake Addin
#tool nuget:?package=Cirreum.Messaging&version=1.0.109
                    
Install as a Cake Tool

Cirreum.Messaging

NuGet Version NuGet Downloads GitHub Release License .NET

Provider-agnostic broker abstractions for the Cirreum Messaging track — queues, topics, subscriptions, and the outbound/received message model.

Overview

Cirreum.Messaging defines the transport abstraction the rest of the Messaging track builds on: a clean, broker-neutral API for sending to and receiving from queues, topics, and subscriptions. Provider packages (e.g., Cirreum.Messaging.Azure for Azure Service Bus) implement these interfaces; consumers program against the abstractions and never touch a broker SDK directly.

Cirreum.Messaging contains:

  • IMessagingClient — the entry point: UseQueue / UseQueueSender / UseQueueReceiver / UseTopic / UseSubscription, plus UseClient<T> to escape-hatch to the native provider client
  • SendingIMessagingQueueSender / IMessagingTopicSender with single and batch operations, and OutboundMessage (content, subject, correlation, TTL, and a cross-broker filterable Properties bag)
  • ReceivingIMessagingQueueReceiver / IMessagingSubscriptionReceiver with receive-one, receive-many, streaming (ReceiveMessagesStreamAsync), and peek; received messages expose content, properties, and the broker ack model (Complete / Abandon / Defer / DeadLetter / RenewLock)

Quick Start

Register a provider instance (see the provider package for configuration-driven registration; instances are keyed IMessagingClient registrations):

builder.AddAzureMessagingClient("primary", connectionString); // Cirreum.Messaging.Azure

Send and receive against the abstractions:

public sealed class OrderQueueService(
	[FromKeyedServices("primary")] IMessagingClient client) {

	public Task SendAsync(Order order, CancellationToken ct) =>
		client.UseQueueSender("orders.pending.v1")
			.PublishMessageAsync(
				OutboundMessage.AsJsonContent(order).WithSubject("orders.created"),
				ct);

	public async Task ProcessOneAsync(CancellationToken ct) {
		var received = await client.UseQueueReceiver("orders.pending.v1")
			.ReceiveMessageAsync(cancellationToken: ct);
		var order = JsonSerializer.Deserialize<Order>(received.ContentString);
		// ... handle ...
		await received.CompleteMessageAsync(ct); // or Abandon / Defer / DeadLetter
	}
}

Streaming consumption (competing consumers):

await foreach (var received in client.UseQueueReceiver("orders.pending.v1")
	.ReceiveMessagesStreamAsync(stoppingToken)) {
	// ... handle + ack ...
}

Topics fan out to subscriptions:

await client.UseTopic("app.notifications.v1")
	.BroadcastMessageAsync(OutboundMessage.AsJsonContent(notice).WithSubject("notice.raised"));

var received = await client.UseSubscription("app.notifications.v1", "api-head")
	.ReceiveMessageAsync();

Where distributed messaging lives

This package is deliberately transport-only. The versioned-envelope model (DistributedMessage, DistributedMessageEnvelope, the registry, batching policies) ships in Cirreum.Messaging.Distributed, and the runtime delivery engine (publish-through-Conductor, batching, the inbound receiver) ships in Cirreum.Runtime.Messaging. The two are peers of this package's abstractions — both compose on top of IMessagingClient.

Contribution Guidelines

  1. Be conservative with new abstractions
    The API surface must remain stable and meaningful.

  2. Limit dependency expansion
    Only add foundational, version-stable dependencies.

  3. Favor additive, non-breaking changes
    Breaking changes ripple through the entire ecosystem.

  4. Include thorough unit tests
    All primitives and patterns should be independently testable.

  5. Document architectural decisions
    Context and reasoning should be clear for future maintainers.

  6. Follow .NET conventions
    Use established patterns from Microsoft.Extensions.* libraries.

Versioning

Cirreum.Messaging follows Semantic Versioning:

  • Major - Breaking API changes
  • Minor - New features, backward compatible
  • Patch - Bug fixes, backward compatible

License

This project is licensed under the MIT License - see the LICENSE file for details.


Cirreum Foundation Framework
Layered simplicity for modern .NET

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Cirreum.Messaging:

Package Downloads
Cirreum.Services.Serverless

Cirreum infrastructure services for serverless applications

Cirreum.Runtime.Messaging

Messaging services composition and the Distributed Messaging delivery engine for Cirreum server hosts: registers configured messaging providers (Azure Service Bus) as keyed IMessagingClient instances, and delivers DistributedMessage traffic with policy-driven batching, an inbound receiver, and OpenTelemetry observability.

Cirreum.Messaging.Azure

Azure Service Bus provider for the Cirreum Messaging track — implements the IMessagingClient broker abstractions for queues, topics, and subscriptions.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.109 47 7/5/2026
1.0.108 212 5/1/2026
1.0.107 305 3/13/2026
1.0.106 143 3/9/2026
1.0.105 194 1/21/2026
1.0.104 312 12/25/2025
1.0.103 171 12/20/2025
1.0.102 406 11/11/2025
1.0.101 315 11/11/2025
1.0.100 223 11/7/2025