Apariencia
Publicar y controlar la capacidad
El hub tiene capacidad limitada: por defecto 100 elementos y modo Wait. En broadcast la capacidad es por suscripción; en work queue es compartida.
csharp
using System.Threading.Channels;
using Greencore.platform.streaming;
await using var hub = StreamHub<int>.CreateWorkQueue(new StreamHubOptions
{
Capacity = 2,
FullMode = BoundedChannelFullMode.DropOldest
});
await hub.PublishAsync(1);
await hub.PublishAsync(2);
var publicacion = await hub.PublishAsync(3);
Console.WriteLine(publicacion.Accepted); // 1.
Console.WriteLine(publicacion.Dropped); // 1: se descartó el 1.| Modo | Cuando no hay espacio |
|---|---|
Wait | Espera a que el consumidor deje espacio |
DropWrite | Descarta el elemento entrante |
DropOldest | Reemplaza el más antiguo del búfer |
DropNewest | Reemplaza el más reciente del búfer |
StreamPublishOutcome informa Recipients, Accepted, Rejected, Canceled y Dropped. Sus indicadores NoRecipients, Closed y CanceledBeforeDelivery distinguen ausencia de destinos, hub cerrado y cancelación previa a las entregas.
El token de PublishAsync(item, token) afecta solo a esa publicación. Puede haber entrega parcial; cancelar no retira elementos ya aceptados. DroppedItemCount acumula descartes por capacidad.
Recuerda: Accepted confirma aceptación en el canal, no procesamiento por la aplicación.
Siguiente: completar y liberar.