Goldpath.Messaging
0.1.0-preview.8
dotnet add package Goldpath.Messaging --version 0.1.0-preview.8
NuGet\Install-Package Goldpath.Messaging -Version 0.1.0-preview.8
<PackageReference Include="Goldpath.Messaging" Version="0.1.0-preview.8" />
<PackageVersion Include="Goldpath.Messaging" Version="0.1.0-preview.8" />
<PackageReference Include="Goldpath.Messaging" />
paket add Goldpath.Messaging --version 0.1.0-preview.8
#r "nuget: Goldpath.Messaging, 0.1.0-preview.8"
#:package Goldpath.Messaging@0.1.0-preview.8
#addin nuget:?package=Goldpath.Messaging&version=0.1.0-preview.8&prerelease
#tool nuget:?package=Goldpath.Messaging&version=0.1.0-preview.8&prerelease
Goldpath.Messaging
Message-path floor of the Goldpath enterprise asset, composed on the MassTransit 8.x OSS line
(v9 went commercial — the golden path carries no commercial-license surprise; exit strategy
documented in docs/rfc/goldpath-messaging.md D1).
Getting started
builder.AddGoldpathMessaging(bus =>
{
bus.AddConsumer<OrderConfirmedConsumer>();
bus.AddGoldpathOutbox<OrdersDbContext>(o => o.UsePostgres()); // features.outbox — template wires the lock provider
bus.UsingRabbitMq((context, cfg) => // transport from manifest providers.broker
{
cfg.Host(connectionString);
cfg.ConfigureGoldpathEndpoints(context); // guard + propagation + retry + conventions
});
});
Consuming through the seam (ADR-0013)
public sealed class OrderConfirmedHandler(OrdersDbContext db) : IIntegrationEventHandler<OrderConfirmed>
{
public async Task HandleAsync(OrderConfirmed e, IntegrationEventContext context, CancellationToken ct)
{
// context: MessageId (the inbox key), CorrelationId, Tenant, RetryAttempt, Headers — no library type.
...
}
}
builder.AddGoldpathMessaging(bus =>
{
bus.AddGoldpathHandler<OrderConfirmed, OrderConfirmedHandler>(); // or bus.AddGoldpathHandlers(typeof(Program).Assembly)
...
});
A handler drains the SAME queue the consumer of that name drained (OrderConfirmedHandler
and OrderConfirmedConsumer → order-confirmed), so moving to the seam changes no wire.
Retry, redelivery, the inbox and tenant restoration are the pipeline's — a throw is a
retry, then the error queue. IConsumer<T> still works (analyzer GP0405 says so, Info
until the templates adopt the seam at the next train; Warning from then on).
Configuration
Bound from Goldpath:Messaging:
{ "Goldpath": { "Messaging": { "Retry": { "ImmediateCount": 3 } } } }
Redelivery defaults: 5m/15m/30m, then the error queue — messages are never silently dropped.
Advanced
The event boundary (the rule everything hangs on):
public record OrderConfirmed(Guid OrderId) : IIntegrationEvent; // broker-bound — marker REQUIRED
public record OrderTotalsChanged(...) : INotification; // in-process — Mediant, never the bus
Publishing an unmarked type throws (runtime guard; analyzer GP0401 will catch it at build).
A Mediant notification must never carry IIntegrationEvent (GP0402) — one world only.
- Outbox (
AddGoldpathOutbox<TContext>): publish commits atomically with business data; consumer-side inbox dedup included; 30m duplicate-detection window default. - Propagation:
X-Goldpath-TenantandX-Correlation-Idflow through publish/consume automatically; on consume the tenant is restored into the message-scopedGoldpathMessageTenantContext(ITenantContextin golden-path services). - Kebab-case endpoint naming; OTel tracing flows via MassTransit's built-in instrumentation.
Providers
Transport chosen in the manifest (providers.broker): rabbitmq, kafka, inmemory
(tests/dev). Transport packages and the outbox lock provider are wired by the template;
this package references only MassTransit core + EF outbox.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- Goldpath.Abstractions (>= 0.1.0-preview.8)
- MassTransit (>= 8.5.10)
- MassTransit.EntityFrameworkCore (>= 8.5.10)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
-
net8.0
- Goldpath.Abstractions (>= 0.1.0-preview.8)
- MassTransit (>= 8.5.10)
- MassTransit.EntityFrameworkCore (>= 8.5.10)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Goldpath.Messaging:
| Package | Downloads |
|---|---|
|
Goldpath.Campaign
Governed mass-execution (L4) for the Goldpath enterprise asset: a campaign is a durable plan of enumerated targets released to broker consumers under a LIVE policy - TPS pacing, daily quota, send windows, max-in-flight - by a single long-lived leader (pacer on Goldpath.Jobs). Claim-before-execute makes double-sends structurally impossible; outcomes flow through a batching sink so 30M items never mean 30M writes; every failure lands in the repair queue with per-item replay (campaign RFC D1-D8). |
|
|
Goldpath.FileExchange
Ring B file-based integration rails for the Goldpath enterprise asset: rails declared as data with baked, compile-checked closures — file-level contracts, idempotent (file, line) ingestion, per-row quarantine that never stops the batch, zero-duplicate replay/reprocess, and archive marks — with the lifecycle published as integration events. The rail is the unit, not the pieces. |
|
|
Goldpath.Approvals
Ring B human approval workflows for the Goldpath enterprise asset: amount-laddered authority chains declared as data, four-eyes and maker-checker enforcement, bounded delegation, deadline escalation, and the worklist — with every lifecycle step audited and published as integration events. Replaces the e-mail approval thread, not the humans in it. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.8 | 110 | 9/7/2026 |
| 0.1.0-preview.7 | 107 | 9/1/2026 |
| 0.1.0-preview.6 | 173 | 8/4/2026 |
| 0.1.0-preview.5 | 92 | 7/28/2026 |
| 0.1.0-preview.4 | 82 | 7/27/2026 |
| 0.1.0-preview.3 | 68 | 7/25/2026 |
| 0.1.0-preview.2 | 79 | 7/13/2026 |
| 0.1.0-preview.1 | 167 | 7/13/2026 |