Skip to content

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.
ModoCuando no hay espacio
WaitEspera a que el consumidor deje espacio
DropWriteDescarta el elemento entrante
DropOldestReemplaza el más antiguo del búfer
DropNewestReemplaza 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.

Uso personal limitado. Uso comercial sujeto a autorización escrita.