public async Task ConsumeAsync(CancellationToken cancellationToken = default) { while (!cancellationToken.IsCancellationRequested) { var messageBytes = await _channelReader.ReadAsync(cancellationToken).ConfigureAwait(false); var message = await _messageAdapter.AdaptAsync <Message <TKey, TValue> >(messageBytes).ConfigureAwait(false); MessageReceived?.Invoke(_channelReader, message); } }
public async Task ProduceAsync(IMessage <TKey, TValue> message, CancellationToken cancellationToken = default) { if (string.IsNullOrEmpty(message.ChannelName)) { message.ChannelName = _channelWriter.Name; } var messageBytes = await _messageAdapter.AdaptAsync(message).ConfigureAwait(false); await _channelWriter.WriteAsync(messageBytes, cancellationToken).ConfigureAwait(false); MessageSent?.Invoke(message); }