public async Task ThisIsHowWeParty() { await _producer.SendMany(_topic, Enumerable.Range(0, 10).Select(n => new ToposMessage($"THIS IS MESSAGE {n}")), partitionKey : "whatever"); using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(10)); using var consumer = _consumerBuilder.Build(); consumer.Subscribe(_topic); try { while (true) { var result = consumer.Consume(cancellationTokenSource.Token); var message = result.Message; var body = Encoding.UTF8.GetString(message.Value); Console.WriteLine($"Got message: {body}"); } } catch (OperationCanceledException) when(cancellationTokenSource.IsCancellationRequested) { } }
static async Task Produce(IToposProducer producer, IEnumerable <string> events, int eventCount, string topic) { var stopwatch = Stopwatch.StartNew(); await producer.SendMany(topic, events.Select((evt, index) => new ToposMessage(evt))); //await Task.WhenAll(events.Select(async (evt, index) => await producer.Send(topic, new ToposMessage(evt), index.ToString()))); var elapsedSeconds = stopwatch.Elapsed.TotalSeconds; Console.WriteLine($"Producing {eventCount} events took {elapsedSeconds:0.0} s - that's {eventCount / elapsedSeconds:0.0} evt/s"); }