Merge remote-tracking branch 'origin/S02-轨迹中台第二部分' into test
This commit is contained in:
commit
3fb1b11241
@ -3,12 +3,13 @@ using DotNetCore.CAP.Filter;
|
|||||||
using SJZY.Expand.ABP.Core;
|
using SJZY.Expand.ABP.Core;
|
||||||
using SJZY.Expand.ABP.Core.Logger;
|
using SJZY.Expand.ABP.Core.Logger;
|
||||||
using SJZY.Expand.ABP.Core.PublicMethords;
|
using SJZY.Expand.ABP.Core.PublicMethords;
|
||||||
|
using SJZY.Track.Domain.Consts;
|
||||||
|
|
||||||
namespace SJZY.Track.Application.EventHandlers;
|
namespace SJZY.Track.Application.EventHandlers;
|
||||||
|
|
||||||
public class CAPFilter : SubscribeFilter
|
public class CapFilter : SubscribeFilter
|
||||||
{
|
{
|
||||||
const string _ERROR_CODE = "Error599";
|
const string ErrorCode = "Error599";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 执行前
|
/// 执行前
|
||||||
@ -17,6 +18,8 @@ public class CAPFilter : SubscribeFilter
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public override Task OnSubscribeExecutingAsync(ExecutingContext context)
|
public override Task OnSubscribeExecutingAsync(ExecutingContext context)
|
||||||
{
|
{
|
||||||
|
if (context.DeliverMessage.Headers["cap-msg-name"]!.EndsWith(GlobalConst.TrackRefreshSubscribe))
|
||||||
|
return Task.CompletedTask;
|
||||||
var argumentJsonStr = context.Arguments.ToJson();
|
var argumentJsonStr = context.Arguments.ToJson();
|
||||||
|
|
||||||
context.DeliverMessage.Headers["sjzy-receive-time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff");
|
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}"));
|
var isSkip = !string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExcuteFilter:{hash}"));
|
||||||
if (isSkip)
|
if (isSkip)
|
||||||
throw new BusinessException(_ERROR_CODE, $"检测到重复消费,消费参数:{argumentJsonStr}");
|
throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}");
|
||||||
|
|
||||||
RedisHelper.Client.Set($"CapExcuteFilter:{hash}", 60 * 10,
|
RedisHelper.Client.Set($"CapExcuteFilter:{hash}", 60 * 10,
|
||||||
TimeSpan.FromHours(1).Seconds); // 1h内不允许一模一样的参数重复消费
|
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("sjzy-arguments", out var arguments);
|
||||||
context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId);
|
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;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
@ -67,7 +70,7 @@ public class CAPFilter : SubscribeFilter
|
|||||||
context.ExceptionHandled = true;
|
context.ExceptionHandled = true;
|
||||||
context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId);
|
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());
|
LogHelper.Warn(ex.ToString());
|
||||||
else
|
else
|
||||||
LogHelper.Error($"cap-msg-id:{messageId}\n{context.Exception}");
|
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("cap-msg-name", out var receiveName);
|
||||||
context.DeliverMessage.Headers.TryGetValue("sjzy-arguments", out var arguments);
|
context.DeliverMessage.Headers.TryGetValue("sjzy-arguments", out var arguments);
|
||||||
|
|
||||||
BuildLog(receiveTime, receiveName, arguments, true, messageId);
|
BuildLog(receiveTime!, receiveName!, arguments!, true, messageId!);
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -129,7 +129,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
IsCanDelete = false,
|
IsCanDelete = false,
|
||||||
OriginTrackContent = @event.OriginTrackContent,
|
OriginTrackContent = @event.OriginTrackContent,
|
||||||
OriginTrackData = @event.OriginTrackData,
|
OriginTrackData = @event.OriginTrackData,
|
||||||
CreateUser = @event.OperationMan,
|
CreateUser = @event.OperationMan ?? "系统",
|
||||||
CreateTime = DateTime.Now
|
CreateTime = DateTime.Now
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -111,7 +111,7 @@ namespace SJZY.Track.Application
|
|||||||
LogHelper.Error("【严重】CAP失败回调事件发生未处理异常" + ex);
|
LogHelper.Error("【严重】CAP失败回调事件发生未处理异常" + ex);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}).AddSubscribeFilter<CAPFilter>();
|
}).AddSubscribeFilter<CapFilter>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void PreConfigureServices(ServiceConfigurationContext context)
|
public override void PreConfigureServices(ServiceConfigurationContext context)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user