我创建了一个使用者基础,以从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));
});
如何手动接受和拒绝邮件?