Exemplo n.º 1
0
        private void RegisterMessageProcessor(ConsumerExecutorDescriptor descriptor)
        {
            _rabbitMqManager.OnMessageReceived += async(sender, transportMessage) =>
            {
                try
                {
                    _rabbitMqManager.CreateConnect(descriptor.Attribute.ExchangeName, descriptor.Attribute.QueueName);
                    var message         = new Message(transportMessage.Headers, Encoding.UTF8.GetString(transportMessage.Body));
                    var value           = message.Value.ToString().ToObject <Message>();
                    var consumerContext = new ConsumerContext(descriptor, value);
                    await Invoker.InvokeAsync(consumerContext, _cts.Token);

                    _rabbitMqManager.Commit(sender);
                    //_rabbitMQManager.Receive(descriptor.Attribute.ExchangeName, descriptor.Attribute.QueueName, (T) => Invoker.InvokeAsync(consumerContext, _cts.Token).GetAwaiter().GetResult());
                    //_rabbitMQManager.Commit(sender);
                }
                catch (Exception ex)
                {
                    _rabbitMqManager.Commit(sender);
                    //_rabbitMQManager.Reject(sender);
                }
            };
        }