EAC.Infrastructure.Messaging
0.1.0-alpha.2
See the version list below for details.
dotnet add package EAC.Infrastructure.Messaging --version 0.1.0-alpha.2
NuGet\Install-Package EAC.Infrastructure.Messaging -Version 0.1.0-alpha.2
<PackageReference Include="EAC.Infrastructure.Messaging" Version="0.1.0-alpha.2" />
<PackageVersion Include="EAC.Infrastructure.Messaging" Version="0.1.0-alpha.2" />
<PackageReference Include="EAC.Infrastructure.Messaging" />
paket add EAC.Infrastructure.Messaging --version 0.1.0-alpha.2
#r "nuget: EAC.Infrastructure.Messaging, 0.1.0-alpha.2"
#:package EAC.Infrastructure.Messaging@0.1.0-alpha.2
#addin nuget:?package=EAC.Infrastructure.Messaging&version=0.1.0-alpha.2&prerelease
#tool nuget:?package=EAC.Infrastructure.Messaging&version=0.1.0-alpha.2&prerelease
EAC.Infrastructure.Messaging
NuGet neutral al broker para contratos lógicos, publicación Outbox y consumo Inbox durable. El estado funcional actual llega a MSG-007: composición DI opt-in, configuración nativa, propagación W3C y compatibilidad Native AOT.
Instalación y composición
Referenciar el paquete solo incorpora el núcleo. No registra stores, transportes, dispatchers ni workers. Cada aplicación declara sus contratos con metadata JSON generada y activa únicamente las capacidades que necesita:
services.AddEacMessaging(configuration, messaging => messaging
.Event<OrderIssued>(
"sample.order.issued",
1,
"sample.order.events",
ApplicationJsonContext.Default.OrderIssued)
.UseOutbox());
Combinaciones admitidas:
- núcleo:
AddEacMessaging(configuration, messaging => messaging.Event(...)); - Outbox: añadir
UseOutbox()o configurarOutbox:Enabled=true; - Inbox: añadir
UseInbox()o configurarInbox:Enabled=true; - ambas: activar las dos capacidades.
Outbox exige que el adaptador registre IOutboxStore e IMessageTransport. Inbox exige IInboxStore e IIncomingMessageDispatcher. Messaging nunca aporta sustitutos silenciosos.
Configuración
{
"Eac": {
"Messaging": {
"Outbox": {
"Enabled": true,
"BatchSize": 100,
"LeaseDuration": "00:01:00",
"MaxAttempts": 5,
"BaseRetryDelay": "00:00:01",
"MaxRetryDelay": "00:01:00"
},
"Inbox": {
"Enabled": false,
"Consumer": "orders",
"LeaseDuration": "00:01:00",
"MaxPayloadBytes": 1048576
},
"Telemetry": {
"AllowedBaggageKeys": [ "tenant.id" ]
}
}
}
}
Las variables de entorno siguen el binding nativo, por ejemplo Eac__Messaging__Outbox__Enabled=true, Eac__Messaging__Inbox__Consumer=orders y Eac__Messaging__Telemetry__AllowedBaggageKeys__0=tenant.id.
La configuración programática se aplica después de IConfiguration y por ello tiene precedencia:
services.AddEacMessaging(configuration, messaging => messaging
.UseOutbox(options => options.BatchSize = 50)
.DisableInbox()
.ConfigureTelemetry(options => options.AllowedBaggageKeys = ["tenant.id"]));
Una capacidad deshabilitada no valida ni exige sus dependencias. Una capacidad habilitada con valores inválidos falla mediante Options validation al iniciar o resolver sus opciones. Endpoints, credenciales y connection strings pertenecen al adaptador físico y deben proceder de variables, workload identity o un proveedor de secretos; no se colocan en esta sección ni se registran en telemetría.
Uso durable
El adaptador Persistence incorpora el mensaje a la transacción local mediante IOutboxStore.AddAsync. OutboxPublisher reclama lotes acotados y publica mediante el IMessageTransport registrado. En entrada, IncomingMessageProcessor valida el contrato, deduplica con IInboxStore, despacha y solo devuelve Acknowledge tras obtener un resultado durable.
Los mensajes pueden capturar MessagingTraceContext.CaptureCurrent(allowedKeys). El paquete continúa únicamente Trace Context W3C válido y baggage explícitamente permitido. La fuente de actividades y métricas es EAC.Infrastructure.Messaging; nunca agrega payloads, tokens, credenciales ni headers completos.
Los contratos canónicos portables se encuentran en contracts; JSON Schema y AsyncAPI son la fuente contractual, no los nombres CLR.
Candidato local
./scripts/ci.sh valida y prueba el componente sin empaquetarlo. Tras esa compilación, ./scripts/release-candidate.sh genera un candidato local sin credenciales ni publicación: .nupkg, .snupkg, SBOM SPDX 2.2, hashes, inspección estructural, smoke consumidor aislado y evidencia ligada al HEAD. Los resultados quedan bajo artifacts/, excluidos del repositorio.
La CI remota usa exclusivamente el binding mínimo .tekton/continuous-integration.yaml, fijado al perfil eac-nuget-ci de Pipeline Catalog v0.4.2. Las Pipelines y Tasks reutilizables no se copian en este repositorio y la CI de ramas no recibe credenciales de publicación.
| 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
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on EAC.Infrastructure.Messaging:
| Package | Downloads |
|---|---|
|
EAC.Infrastructure.Persistence.EntityFrameworkCore.Messaging
Optional Entity Framework Core persistence adapter for EAC Messaging Outbox and Inbox. |
|
|
EAC.Infrastructure.Messaging.Kafka
Kafka transport adapter for the broker-neutral EAC messaging contracts. |
|
|
EAC.Infrastructure.Persistence.MongoDB.Messaging
Optional MongoDB persistence adapter for EAC Messaging Outbox and Inbox. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-rc.4 | 79 | 10/23/2026 |
| 0.1.0-rc.2 | 371 | 8/21/2026 |
| 0.1.0-rc.1 | 84 | 8/21/2026 |
| 0.1.0-beta.1 | 71 | 8/21/2026 |
| 0.1.0-alpha.2 | 76 | 8/21/2026 |