LineTen.Messaging.Abstractions
2.0.112
dotnet add package LineTen.Messaging.Abstractions --version 2.0.112
NuGet\Install-Package LineTen.Messaging.Abstractions -Version 2.0.112
<PackageReference Include="LineTen.Messaging.Abstractions" Version="2.0.112" />
<PackageVersion Include="LineTen.Messaging.Abstractions" Version="2.0.112" />
<PackageReference Include="LineTen.Messaging.Abstractions" />
paket add LineTen.Messaging.Abstractions --version 2.0.112
#r "nuget: LineTen.Messaging.Abstractions, 2.0.112"
#:package LineTen.Messaging.Abstractions@2.0.112
#addin nuget:?package=LineTen.Messaging.Abstractions&version=2.0.112
#tool nuget:?package=LineTen.Messaging.Abstractions&version=2.0.112
LineTen.Messaging.Abstractions
Contracts for LineTen messaging v3. Zero dependencies. Implementations live in
LineTen.Messaging.Bus.AzureServiceBus and LineTen.Messaging.Bus.InMemory; registration
lives in LineTen.Messaging.DependencyInjection.
Contents
IMessageBus— marker interface; declare one type per bus.IPublisher<TBus>—PublishAsync<T>(message, ct)andPublishAsync<T>(message, PublishOptions, ct).PublishOptions— optionalCorrelationIdand application properties for a publish.IPerformer<T>—PerformAsync(T message, IMessageContext context, CancellationToken).IDeadLetterPerformer<T>—DeadLetterPerformAsync(T message, DeadLetterContext context, CancellationToken).IMessageContext— per-delivery metadata handed to a performer.DeadLetterContext— metadata for a dead-lettered message.FilterBuilder/FilterExpression— subscription filter DSL compiled by each transport.SubscriptionNamer— deterministic subscription naming (Compute(serviceName, topic, messageTypeFqn, filterCanonicalForm)).- Transport seam (
IBrokerTransport,IBrokerPublisher,IBrokerSubscription,IBrokerAdministration) for transport implementers. - Retry contract (
IRetryPolicy,TransientExceptionAttribute,PermanentExceptionAttribute), health contract, telemetry constants.
IMessageContext
| Member | Type | Meaning |
|---|---|---|
MessageId |
Guid |
Identifier of this message. Minted per message at publish time. Use for idempotency. |
CorrelationId |
Guid |
Broker correlation id of this message. Guid.Empty when the message carried none. Use to link a reply to its request. |
DeliveryCount |
int |
1-based delivery attempt. |
EnqueuedAtUtc |
DateTime |
UTC enqueue time. |
Properties |
IReadOnlyDictionary<string, string> |
Application properties set by the publisher. |
MessageId and CorrelationId are different values. A reply has its own MessageId; it carries the
request's CorrelationId.
DeadLetterContext
Positional record: Reason, ErrorDescription, Source, DeliveryCount, OriginalEnqueuedAtUtc,
DeadLetteredAtUtc, Properties, CorrelationId. CorrelationId is the original message's
correlation id, Guid.Empty when it carried none.
Correlation
Resolved at publish time, in order: explicit PublishOptions.CorrelationId; the correlation id of the
message being performed, when publishing inside a performer; the ambient W3C trace id; Guid.Empty.
Request/response over a shared response topic:
- Requester generates
requestId, records it in a store shared across its instances, publishes withnew PublishOptions(requestId). - The responding performer publishes its reply without setting a correlation id. The reply inherits
requestId. - The requester's reply performer reads
context.CorrelationIdand looks it up in the shared store. Competing consumers mean any instance may receive the reply; do not use an in-memory pending map.
Version notes
2.0.112
- Added
IMessageContext.CorrelationId. - Added
DeadLetterContext.CorrelationIdas the eighth positional parameter. Code that constructsDeadLetterContextdirectly must supply it. Consumers that only implementIPerformer<T>orIDeadLetterPerformer<T>are unaffected. - Both transports populate the value from the received message. Dead-lettering preserves it.
Documentation
docs/adr/0009-publish-properties-and-correlation.md and docs/adr/0011-consume-side-correlation-exposure.md
in the lineten/core-csharp-nuget repository.
| Product | Versions 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. |
-
net10.0
- No dependencies.
NuGet packages (3)
Showing the top 3 NuGet packages that depend on LineTen.Messaging.Abstractions:
| Package | Downloads |
|---|---|
|
LineTen.Messaging.DependencyInjection
LineTen messaging v3 composition root. Provides AddLineTenMessaging(serviceName), AddBus<TBus>, AddPerformer<TPerformer, TMessage> with fluent options, and a startup-time validator (IHostedService) that fails fast on misconfigured registrations. Transport selection (UseAzureServiceBus, UseInMemory) lives in the respective transport packages, which add their own extensions on IBusOptionsBuilder<TBus>. See ADR-0007 for the packaging rationale. |
|
|
LineTen.Messaging.Bus.AzureServiceBus
LineTen messaging v3 Azure Service Bus transport. The only package that references Azure.Messaging.ServiceBus. Implements IBrokerTransport with idempotent subscription reconciliation, lock-renewal-aware processor, and deterministic FilterExpression to SqlRuleFilter compilation. |
|
|
LineTen.Messaging.Bus.InMemory
LineTen messaging v3 in-memory transport. Backed by System.Threading.Channels. For use in unit tests and local development only. Hard-blocked at construction time when ASPNETCORE_ENVIRONMENT is a production-tier value. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.112 | 162 | 9/7/2026 |
| 2.0.111 | 170 | 7/13/2026 |
| 2.0.110 | 986 | 6/23/2026 |
| 2.0.109 | 202 | 6/19/2026 |
| 2.0.108 | 172 | 6/17/2026 |
| 2.0.107 | 197 | 6/12/2026 |
| 2.0.106 | 170 | 6/1/2026 |
| 2.0.105 | 343 | 6/1/2026 |
| 2.0.104 | 162 | 6/1/2026 |
| 2.0.103 | 165 | 5/28/2026 |
| 2.0.102 | 199 | 5/27/2026 |
| 2.0.101 | 160 | 5/21/2026 |
| 2.0.100 | 148 | 5/20/2026 |
| 2.0.99 | 143 | 5/18/2026 |
| 2.0.98 | 127 | 5/18/2026 |
| 2.0.97 | 120 | 5/14/2026 |
| 2.0.96 | 120 | 5/14/2026 |
| 2.0.95 | 118 | 5/14/2026 |
| 2.0.94 | 109 | 5/13/2026 |
| 2.0.93 | 115 | 5/12/2026 |