From 232d7d8254a5bd05d4a8ca6523f391f423409581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Mon, 1 Apr 2024 18:14:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix=EF=BC=9A=E6=8E=A8=E9=80=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SJZY.Track.Application/EventHandlers/CAPFilter.cs | 4 ++-- .../EventHandlers/TrackPushEventHandler.cs | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs index 6f9c5ba3..6966de18 100644 --- a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs +++ b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs @@ -33,8 +33,8 @@ public class CapFilter : SubscribeFilter using (RedisHelper.Client.Lock("Filter:" + hash, 10)) { var isSkip = !string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExcuteFilter:{hash}")); - if (isSkip) - throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}"); + // if (isSkip) + // throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}"); RedisHelper.Client.Set($"CapExcuteFilter:{hash}", 60 * 10, TimeSpan.FromHours(1).Seconds); // 1h内不允许一模一样的参数重复消费 diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs index 15232caf..fa52d7b6 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs @@ -48,8 +48,6 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var log = new TrackPushRecordIndex { IndexName = $"{GlobalConst.TrackPushRecordsIndex}-{DateTime.Now:yyyy.MM.dd}", - RequestId = res.RequestId, - Message = res.Msg, OptionType = @event.OptionType.ToString(), OrderId = @event.OrderId, TrackStatus = @event.TrackStatus, @@ -183,6 +181,8 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe log.PushContent = body.ToJson(); log.IsSuccess = res.Code == InterfaceRelayConst.SuccessCode; + log.RequestId = res.RequestId; + log.Message = res.Msg; } private async Task DoUpdateAsync(TrackPushEvent @event, @@ -215,5 +215,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe log.PushContent = data.ToJson(); log.IsSuccess = res.Code == InterfaceRelayConst.SuccessCode; + log.RequestId = res.RequestId; + log.Message = res.Msg; } } \ No newline at end of file From 7331076e44cf2480042daad80f0c3963443ee270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Mon, 1 Apr 2024 18:16:50 +0800 Subject: [PATCH 2/2] =?UTF-8?q?change=EF=BC=9A=E6=9C=AC=E5=9C=B0=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E4=B8=8D=E5=81=9A=E5=B9=82=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SJZY.Track.Application/EventHandlers/CAPFilter.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs index 6966de18..d6186324 100644 --- a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs +++ b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs @@ -24,6 +24,12 @@ public class CapFilter : SubscribeFilter if (context.DeliverMessage.Headers["cap-msg-name"]!.EndsWith(GlobalConst.TrackRefreshSubscribe)) return Task.CompletedTask; + // 本地调试不做幂等 + if (System.Diagnostics.Debugger.IsAttached) + { + return Task.CompletedTask; + } + var argumentJsonStr = context.Arguments.ToJson(); context.DeliverMessage.Headers["sjzy-arguments"] = argumentJsonStr; @@ -33,8 +39,8 @@ public class CapFilter : SubscribeFilter using (RedisHelper.Client.Lock("Filter:" + hash, 10)) { var isSkip = !string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExcuteFilter:{hash}")); - // if (isSkip) - // throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}"); + if (isSkip) + throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}"); RedisHelper.Client.Set($"CapExcuteFilter:{hash}", 60 * 10, TimeSpan.FromHours(1).Seconds); // 1h内不允许一模一样的参数重复消费