Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 6
0
 public ReceiveTransportCompletedEvent(Uri inputAddress, DeliveryMetrics metrics)
 {
     InputAddress            = inputAddress;
     DeliveryCount           = metrics.DeliveryCount;
     ConcurrentDeliveryCount = metrics.ConcurrentDeliveryCount;
 }
 public ReceiveTransportCompletedEvent(Uri inputAddress, DeliveryMetrics metrics)
 {
     InputAddress = inputAddress;
     DeliveryCount = metrics.DeliveryCount;
     ConcurrentDeliveryCount = metrics.ConcurrentDeliveryCount;
 }