From 34e99f0a7e48ebb6bcd851f6d171e38c0ff33843 Mon Sep 17 00:00:00 2001 From: xiaolipro <2357729423@qq.com> Date: Tue, 29 Jul 2025 14:58:46 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9Amq=E6=B6=88=E8=B4=B9=E6=9C=AAack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Rabbit/RabbitClient.cs | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/InterfaceForward.Application/Rabbit/RabbitClient.cs b/src/InterfaceForward.Application/Rabbit/RabbitClient.cs index 2a8b0ec..b246f5b 100644 --- a/src/InterfaceForward.Application/Rabbit/RabbitClient.cs +++ b/src/InterfaceForward.Application/Rabbit/RabbitClient.cs @@ -29,17 +29,31 @@ public class RabbitClient( } var consumer = new AsyncEventingBasicConsumer(channel); - consumer.Received += async (model, ea) => + consumer.Received += (model, ea) => + { + _ = Task.Run(async () => { - await using var scope = serviceScopeFactory.CreateAsyncScope(); - foreach (var handler in scope.ServiceProvider.GetServices()) + try { - if (handler.Enable(consumeOptions)) + await using var scope = serviceScopeFactory.CreateAsyncScope(); + foreach (var handler in scope.ServiceProvider.GetServices()) { - await handler.Handle(ea); + if (handler.Enable(consumeOptions)) + { + await handler.Handle(ea); + } } + channel.BasicAck(ea.DeliveryTag, false); } - }; + catch (Exception ex) + { + logger.LogError($"rabbit on queue({consumeOptions.Queue}) received error: {ex}"); + channel.BasicNack(ea.DeliveryTag, false, consumeOptions.FailedRequeue); + } + }); + + return Task.CompletedTask; + }; channel.CallbackException += (sender, args) => {