Merge pull request '添加RabbitMQ消息处理失败,重新回炉' (#424) from eithday/Admin.NET.Pro:v2 into v2

Reviewed-on: https://code.adminnet.top/Admin.NET/Admin.NET.Pro/pulls/424
This commit is contained in:
zuohuaijun 2025-08-27 10:37:29 +08:00
commit 65ec0e551b

View File

@ -37,15 +37,34 @@ public class RabbitMqConsumer : BackgroundService
consumer.ReceivedAsync += async (sender, ea) =>
{
byte[] body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
try
{
byte[] body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
await _handler.HandleMessageAsync(message);
await _handler.HandleMessageAsync(message);
Console.WriteLine($"[x] Received from {_handler.QueueName}: {message}");
await channel.BasicAckAsync(deliveryTag: ea.DeliveryTag, multiple: false);
Console.WriteLine($"[x] Received from {_handler.QueueName}: {message}");
await channel.BasicAckAsync(deliveryTag: ea.DeliveryTag, multiple: false);
}
catch (Exception ex)
{
_logger.LogError(ex, "消息处理失败");
await channel.BasicNackAsync(deliveryTag: ea.DeliveryTag, multiple: false, requeue: true);
}
};
await channel.BasicConsumeAsync(queue: _handler.QueueName, autoAck: false, consumer: consumer);
// 注册取消回调
stoppingToken.Register(async () =>
{
_logger.LogInformation("Stopping RabbitMQ consumer");
if (channel.IsOpen)
{
await channel.CloseAsync();
}
_connection.Dispose();
});
}
}