Skip to content

StreamHub: difundir o repartir ​

Elige el modo al crear el hub. Para varios consumidores crea varias suscripciones.

FábricaQué reciben los consumidores
CreateBroadcast()Una entrega por suscripción registrada al publicar
CreateWorkQueue()Se reparten los elementos de una cola compartida
csharp
using Greencore.platform.streaming;

await using var hub = StreamHub<int>.CreateBroadcast();
await using var primero = hub.Subscribe();
await using var segundo = hub.Subscribe();

var a = LeerAsync("A", primero);
var b = LeerAsync("B", segundo);
await hub.PublishAsync(42);
hub.Complete();
await Task.WhenAll(a, b);

static async Task LeerAsync(string nombre, StreamSubscription<int> suscripcion)
{
    await foreach (var numero in suscripcion.ReadAllAsync())
        Console.WriteLine($"{nombre}: {numero}");
}

En este ejemplo ambos reciben 42. Con CreateWorkQueue(), solo uno lo retira; no se garantiza reparto equitativo.

Broadcast no guarda historial para suscripciones futuras. Work queue puede almacenar elementos sin consumidores hasta alcanzar su capacidad.

Una suscripción admite un único enumerador durante su vida útil. Para otra lectura crea otra suscripción.

Recuerda: broadcast copia entregas; work queue reparte trabajo, sin confirmar su procesamiento.

Siguiente: publicación y capacidad.

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