Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }