Merge remote-tracking branch 'origin/S02-轨迹中台第二部分' into test

This commit is contained in:
dingenwen 2024-03-27 15:00:33 +08:00
commit 3fb1b11241
3 changed files with 11 additions and 8 deletions

View File

@ -3,12 +3,13 @@ using DotNetCore.CAP.Filter;
using SJZY.Expand.ABP.Core;
using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Domain.Consts;
namespace SJZY.Track.Application.EventHandlers;
public class CAPFilter : SubscribeFilter
public class CapFilter : SubscribeFilter
{
const string _ERROR_CODE = "Error599";
const string ErrorCode = "Error599";
/// <summary>
/// 执行前
@ -17,6 +18,8 @@ public class CAPFilter : SubscribeFilter
/// <returns></returns>
public override Task OnSubscribeExecutingAsync(ExecutingContext context)
{
if (context.DeliverMessage.Headers["cap-msg-name"]!.EndsWith(GlobalConst.TrackRefreshSubscribe))
return Task.CompletedTask;
var argumentJsonStr = context.Arguments.ToJson();
context.DeliverMessage.Headers["sjzy-receive-time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff");
@ -29,7 +32,7 @@ public class CAPFilter : SubscribeFilter
{
var isSkip = !string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExcuteFilter:{hash}"));
if (isSkip)
throw new BusinessException(_ERROR_CODE, $"检测到重复消费,消费参数:{argumentJsonStr}");
throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}");
RedisHelper.Client.Set($"CapExcuteFilter:{hash}", 60 * 10,
TimeSpan.FromHours(1).Seconds); // 1h内不允许一模一样的参数重复消费
@ -51,7 +54,7 @@ public class CAPFilter : SubscribeFilter
context.DeliverMessage.Headers.TryGetValue("sjzy-arguments", out var arguments);
context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId);
BuildLog(receiveTime, receiveName, arguments, false, messageId);
BuildLog(receiveTime!, receiveName!, arguments!, false, messageId!);
return Task.CompletedTask;
}
@ -67,7 +70,7 @@ public class CAPFilter : SubscribeFilter
context.ExceptionHandled = true;
context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId);
if (context.Exception is BusinessException ex && ex.Code == _ERROR_CODE)
if (context.Exception is BusinessException ex && ex.Code == ErrorCode)
LogHelper.Warn(ex.ToString());
else
LogHelper.Error($"cap-msg-id:{messageId}\n{context.Exception}");
@ -77,7 +80,7 @@ public class CAPFilter : SubscribeFilter
context.DeliverMessage.Headers.TryGetValue("cap-msg-name", out var receiveName);
context.DeliverMessage.Headers.TryGetValue("sjzy-arguments", out var arguments);
BuildLog(receiveTime, receiveName, arguments, true, messageId);
BuildLog(receiveTime!, receiveName!, arguments!, true, messageId!);
return Task.CompletedTask;
}

View File

@ -129,7 +129,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
IsCanDelete = false,
OriginTrackContent = @event.OriginTrackContent,
OriginTrackData = @event.OriginTrackData,
CreateUser = @event.OperationMan,
CreateUser = @event.OperationMan ?? "系统",
CreateTime = DateTime.Now
};

View File

@ -111,7 +111,7 @@ namespace SJZY.Track.Application
LogHelper.Error("【严重】CAP失败回调事件发生未处理异常" + ex);
}
};
}).AddSubscribeFilter<CAPFilter>();
}).AddSubscribeFilter<CapFilter>();
}
public override void PreConfigureServices(ServiceConfigurationContext context)