public async Task <IConsumer> CreateConsumerAsync(ConsumerConfiguration configuration, CancellationToken cancellationToken) { var session = await CreateSession(cancellationToken).ConfigureAwait(false); var consumerBuilder = new ConsumerBuilder(_loggerFactory, _transactionsManager, session); return(await consumerBuilder.CreateAsync(configuration, cancellationToken).ConfigureAwait(false)); }
public static Task <IConsumer> CreateConsumerAsync(this IConnection connection, string address, string queue, CancellationToken cancellationToken = default) { var configuration = new ConsumerConfiguration { Address = address, Queue = queue }; return(connection.CreateConsumerAsync(configuration, cancellationToken)); }
public static Task <IConsumer> CreateConsumerAsync(this IConnection connection, string address, RoutingType routingType, string queue, CancellationToken cancellationToken = default) { var configuration = new ConsumerConfiguration { Address = address, RoutingType = routingType, Queue = queue, Durable = routingType == RoutingType.Multicast, Shared = routingType == RoutingType.Multicast, }; return(connection.CreateConsumerAsync(configuration, cancellationToken)); }
public Consumer(ILoggerFactory loggerFactory, ReceiverLink receiverLink, TransactionsManager transactionsManager, ConsumerConfiguration configuration) { _logger = loggerFactory.CreateLogger <Consumer>(); _receiverLink = receiverLink; _transactionsManager = transactionsManager; _configuration = configuration; var channel = Channel.CreateBounded <Message>(configuration.Credit); _reader = channel.Reader; _writer = channel.Writer; _receiverLink.Start(configuration.Credit, (receiver, m) => { var message = new Message(m); if (_writer.TryWrite(message)) { Log.MessageBuffered(_logger, message); } else { Log.FailedToBufferMessage(_logger, message); } }); }