Cosmos.MultiTenancy.CritterStack
0.2.0
dotnet add package Cosmos.MultiTenancy.CritterStack --version 0.2.0
NuGet\Install-Package Cosmos.MultiTenancy.CritterStack -Version 0.2.0
<PackageReference Include="Cosmos.MultiTenancy.CritterStack" Version="0.2.0" />
<PackageVersion Include="Cosmos.MultiTenancy.CritterStack" Version="0.2.0" />
<PackageReference Include="Cosmos.MultiTenancy.CritterStack" />
paket add Cosmos.MultiTenancy.CritterStack --version 0.2.0
#r "nuget: Cosmos.MultiTenancy.CritterStack, 0.2.0"
#:package Cosmos.MultiTenancy.CritterStack@0.2.0
#addin nuget:?package=Cosmos.MultiTenancy.CritterStack&version=0.2.0
#tool nuget:?package=Cosmos.MultiTenancy.CritterStack&version=0.2.0
Cosmos.MultiTenancy.CritterStack
Resolver de tenant compuesto para servicios que combinan HTTP y daemon de Wolverine (inbox/outbox) en el mismo proceso.
Descripcion
Cosmos.MultiTenancy.AspNetCore provee TrustedHeadersTenantResolver, que lee el TenantId de un header HTTP. Funciona perfecto en el flujo HTTP, pero falla en handlers ejecutados por el daemon de Wolverine porque ahi no existe HttpContext.
Este paquete completa el cuadro:
WolverineMessageContextTenantResolverlee el TenantId desdeIMessageContext.TenantId, hidratado automaticamente por Wolverine a partir del envelope entrante.CompositeTenantResolverprueba un resolver primario (HTTP) y, si tiraInvalidOperationException, cae al de message context.- La extension method
AgregarTenantResolverHibrido()registra todo lo necesario para apps que combinan ambos modos.
Instalacion
dotnet add package Cosmos.MultiTenancy.CritterStack
Uso
Apps hibridas (HTTP + daemon Wolverine)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AgregarTenantResolverHibrido();
El header HTTP usado es X-Tenant-Id (decision de diseño del equipo, no es configurable).
Comportamiento del composite
CompositeTenantResolver itera factories en orden:
- Primer factory:
TrustedHeadersTenantResolver(HTTP). Si el scope tieneHttpContextcon el header configurado, retorna el valor. - Si el primer factory tira
InvalidOperationException, prueba el segundo:WolverineMessageContextTenantResolver. Si el scope es un handler de Wolverine con TenantId en el envelope, retorna el valor. - Si ninguno resuelve, lanza
InvalidOperationExceptioncon unAggregateExceptionque detalla las fallas.
Solo InvalidOperationException triggerea el fallback. Cualquier otra excepcion se propaga, evitando enmascarar bugs reales (NRE, errores de config, etc.).
Dependencias
Cosmos.MultiTenancy.AspNetCore— proveeTrustedHeadersTenantResolver.WolverineFx— proveeIMessageContexty la propagacion automatica del TenantId via envelope.
Paquetes relacionados
- Cosmos.MultiTenancy: contrato
ITenantResolver. - Cosmos.MultiTenancy.AspNetCore: resolver HTTP estricto (sin fallback).
- Cosmos.EventDriven.CritterStack: senders de eventos que consumen
ITenantResolver. - Cosmos.EventSourcing.CritterStack: routers de comandos y queries que consumen
ITenantResolver.
Requisitos
- .NET 10.0 o superior
- App ASP.NET Core (requiere
Microsoft.AspNetCore.Appvia dependencia transitiva)
Licencia
Copyright © Cosmos. Todos los derechos reservados.
| 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
- Cosmos.MultiTenancy.AspNetCore (>= 0.2.0)
- WolverineFx (>= 5.18.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.