async Task IFilter <ClientContext> .Send(ClientContext context, IPipe <ClientContext> next) { var receiveSettings = context.GetPayload <ReceiveSettings>(); var inputAddress = receiveSettings.GetInputAddress(context.ConnectionContext.HostAddress); var consumer = new AmazonSqsBasicConsumer(context, inputAddress, _context); await context.BasicConsume(receiveSettings, consumer).ConfigureAwait(false); await consumer.Ready.ConfigureAwait(false); Add(consumer); await _context.TransportObservers.Ready(new ReceiveTransportReadyEvent(inputAddress)).ConfigureAwait(false); try { await consumer.Completed.ConfigureAwait(false); } finally { DeliveryMetrics metrics = consumer; await _context.TransportObservers.Completed(new ReceiveTransportCompletedEvent(inputAddress, metrics)).ConfigureAwait(false); if (_log.IsDebugEnabled) { _log.DebugFormat("Consumer completed: {0} received, {0} concurrent", metrics.DeliveryCount, metrics.ConcurrentDeliveryCount); } } }
async Task IFilter <ModelContext> .Send(ModelContext context, IPipe <ModelContext> next) { var receiveSettings = context.GetPayload <ReceiveSettings>(); var inputAddress = receiveSettings.GetInputAddress(context.ConnectionContext.HostSettings.HostAddress); var queueUrl = await context.GetQueue(receiveSettings.EntityName).ConfigureAwait(false); var consumer = new AmazonSqsBasicConsumer(context, queueUrl, inputAddress, _receivePipe, _receiveObserver, _context, _deadLetterTransport, _errorTransport); await context.BasicConsume(queueUrl, receiveSettings, consumer).ConfigureAwait(false); await consumer.Ready.ConfigureAwait(false); Add(consumer); await _transportObserver.Ready(new ReceiveTransportReadyEvent(inputAddress)).ConfigureAwait(false); try { await consumer.Completed.ConfigureAwait(false); } finally { DeliveryMetrics metrics = consumer; await _transportObserver.Completed(new ReceiveTransportCompletedEvent(inputAddress, metrics)).ConfigureAwait(false); if (_log.IsDebugEnabled) { _log.DebugFormat("Consumer completed: {0} received, {0} concurrent", metrics.DeliveryCount, metrics.ConcurrentDeliveryCount); } } }