public Task StartAsync(CancellationToken cancellationToken)
        {
            _consumer           = new EventingBasicConsumer(_channel);
            _consumer.Received += (sender, args) =>
            {
                var triggerValue = new RabbitQueueTriggerValue {
                    MessageBytes = args.Body
                };
                if (args.BasicProperties != null)
                {
                    triggerValue.MessageId     = args.BasicProperties.MessageId;
                    triggerValue.ApplicationId = args.BasicProperties.AppId;
                    triggerValue.ContentType   = args.BasicProperties.ContentType;
                    triggerValue.CorrelationId = args.BasicProperties.CorrelationId;
                    triggerValue.Headers       = args.BasicProperties.Headers;
                }

                var result = _executor.TryExecuteAsync(new TriggeredFunctionData {
                    TriggerValue = triggerValue
                }, CancellationToken.None).Result;

                if (result.Succeeded)
                {
                    _channel.BasicAck(args.DeliveryTag, false);
                }
                else
                {
                    _channel.BasicNack(args.DeliveryTag, false, false);
                }
            };

            _consumerTag = _channel.BasicConsume(_queueName, false, _consumer);

            return(Task.FromResult(true));
        }
Exemple #2
0
        private IReadOnlyDictionary <string, object> GetBindingData(RabbitQueueTriggerValue value)
        {
            var bindingData = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase)
            {
                { "RabbitQueueTrigger", value }
            };

            return(bindingData);
        }
Exemple #3
0
 public RabbitQueueValueBinder(ParameterInfo parameter, RabbitQueueTriggerValue value) : base(parameter.ParameterType)
 {
     _value = value;
 }