private static async Task HandleMessage <TMessage, TConsumer>(Message message, IConsumer consumer, IServiceProvider serviceProvider, CancellationToken token) where TConsumer : class, ITypedConsumer <TMessage> { var msg = JsonSerializer.Deserialize <TMessage>(message.GetBody <string>()); using var scope = serviceProvider.CreateScope(); var typedConsumer = scope.ServiceProvider.GetService <TConsumer>(); await typedConsumer.ConsumeAsync(msg, token); await consumer.AcceptAsync(message); }
private Task ConsumerLoop() { return(Task.Run(async() => { try { while (!_cts.IsCancellationRequested) { var pingMsg = await _consumer.ReceiveAsync(_cts.Token); await _producer.SendAsync(_pongMessage, _cts.Token); await _consumer.AcceptAsync(pingMsg); } } catch (OperationCanceledException) { } })); }
private Task ConsumerLoop() { return(Task.Run(async() => { try { while (!_cts.IsCancellationRequested) { var msg = await _consumer.ReceiveAsync(_cts.Token); if (_skipMessages > 0) { _skipMessages--; } else { _counter++; } if (_counter == _numberOfMessages) { _stopwatch.Stop(); _tsc.TrySetResult(new Stats { MessagesCount = _counter, Elapsed = _stopwatch.Elapsed }); } else { await _producer.SendAsync(_pingMessage, _cts.Token); } await _consumer.AcceptAsync(msg); } } catch (OperationCanceledException) { } })); }
public static ValueTask AcceptAsync(this IConsumer consumer, Message message) { return(consumer.AcceptAsync(message, null)); }