public async Task Send(ConsumerContext <TKey, TValue> context, IPipe <ConsumerContext <TKey, TValue> > next) { var inputAddress = _context.InputAddress; IKafkaMessageReceiver <TKey, TValue> receiver = new KafkaMessageReceiver <TKey, TValue>(_context, context); await receiver.Ready.ConfigureAwait(false); _context.AddConsumeAgent(receiver); await _context.TransportObservers.Ready(new ReceiveTransportReadyEvent(inputAddress)).ConfigureAwait(false); try { await receiver.Completed.ConfigureAwait(false); } finally { DeliveryMetrics metrics = receiver; await _context.TransportObservers.Completed(new ReceiveTransportCompletedEvent(inputAddress, metrics)); LogContext.Debug?.Log("Consumer completed {InputAddress}: {DeliveryCount} received, {ConcurrentDeliveryCount} concurrent", inputAddress, metrics.DeliveryCount, metrics.ConcurrentDeliveryCount); } await next.Send(context).ConfigureAwait(false); }
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); } } }
async Task IFilter <ClientContext> .Send(ClientContext context, IPipe <ClientContext> next) { var receiveSettings = context.GetPayload <ReceiveSettings>(); var inputAddress = receiveSettings.GetInputAddress(context.ConnectionContext.HostAddress); var receiver = new AmazonSqsMessageReceiver(context, _context); await receiver.Ready.ConfigureAwait(false); Add(receiver); await _context.TransportObservers.Ready(new ReceiveTransportReadyEvent(inputAddress)).ConfigureAwait(false); try { await receiver.Completed.ConfigureAwait(false); } finally { DeliveryMetrics metrics = receiver; await _context.TransportObservers.Completed(new ReceiveTransportCompletedEvent(inputAddress, metrics)).ConfigureAwait(false); LogContext.Debug?.Log("Consumer completed {InputAddress}: {DeliveryCount} received, {ConcurrentDeliveryCount} concurrent", inputAddress, metrics.DeliveryCount, metrics.ConcurrentDeliveryCount); } }
public async Task Send(ProcessorContext context, IPipe <ProcessorContext> next) { var inputAddress = _context.InputAddress; IEventHubDataReceiver receiver = new EventHubDataReceiver(_context, context); await receiver.Start().ConfigureAwait(false); await receiver.Ready.ConfigureAwait(false); _context.AddConsumeAgent(receiver); await _context.TransportObservers.Ready(new ReceiveTransportReadyEvent(inputAddress)).ConfigureAwait(false); try { await receiver.Completed.ConfigureAwait(false); } finally { DeliveryMetrics metrics = receiver; await _context.TransportObservers.Completed(new ReceiveTransportCompletedEvent(inputAddress, metrics)); LogContext.Debug?.Log("Consumer completed {InputAddress}: {DeliveryCount} received, {ConcurrentDeliveryCount} concurrent", inputAddress, metrics.DeliveryCount, metrics.ConcurrentDeliveryCount); } await next.Send(context).ConfigureAwait(false); }
public ReceiveTransportCompletedEvent(Uri inputAddress, DeliveryMetrics metrics) { InputAddress = inputAddress; DeliveryCount = metrics.DeliveryCount; ConcurrentDeliveryCount = metrics.ConcurrentDeliveryCount; }