如何手动接受和拒绝(Ack和Nack)消息?

时间:2019-06-17 10:52:01

标签: asp.net-core easynetq

我创建了一个使用者基础,以从RabbitMq检索每个消息。我使用easynetq来消费通过高级模式配置了使用者的消息,因为队列具有一些不同的配置。收到一条消息后,调用异步方法来处理每条消息。但是,高级中的消耗方法没有异步消耗方法。我必须使用Task.Run或Task.Factory.StartNew方法调用异步方法吗?

某些过程可能会持续很长时间,并且在此过程中可能会发生错误。在错误情况下,我需要拒绝该消息,然后再次将该消息放入队列。当该过程最终成功完成时,该消息可以接受并将其从队列中删除。

这是我的代码的示例:

var queue = _bus.Advanced.QueueDeclare(_queueName, durable: true);
            _consumerResult = _bus.Advanced.Consume(queue, (body, properties, info) =>
            {
                var message = Encoding.UTF8.GetString(body);

                if (string.IsNullOrWhiteSpace(message))
                    return;

                var deserializeObject = JsonConvert.DeserializeObject<IntegrationEvent<T>>(message, new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Include,
                    TypeNameHandling = TypeNameHandling.Auto,
                    TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
                });

                deserializeObject.DeliveryTag = info.DeliverTag;

                // I need to call a async method               
                ConsumeAsync(deserializeObject));

            });

如何手动接受和拒绝邮件?

0 个答案:

没有答案