EAC.Infrastructure.Messaging 0.1.0-alpha.2

This is a prerelease version of EAC.Infrastructure.Messaging.
There is a newer prerelease version of this package available.
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
                    
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="EAC.Infrastructure.Messaging" Version="0.1.0-alpha.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EAC.Infrastructure.Messaging" Version="0.1.0-alpha.2" />
                    
Directory.Packages.props
<PackageReference Include="EAC.Infrastructure.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 EAC.Infrastructure.Messaging --version 0.1.0-alpha.2
                    
#r "nuget: EAC.Infrastructure.Messaging, 0.1.0-alpha.2"
                    
#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 EAC.Infrastructure.Messaging@0.1.0-alpha.2
                    
#: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=EAC.Infrastructure.Messaging&version=0.1.0-alpha.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=EAC.Infrastructure.Messaging&version=0.1.0-alpha.2&prerelease
                    
Install as a Cake Tool

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 configurar Outbox:Enabled=true;
  • Inbox: añadir UseInbox() o configurar Inbox: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 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.

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