Merge remote-tracking branch 'origin/S03-轨迹中台优化项' into test

This commit is contained in:
dingenwen 2024-05-27 16:52:44 +08:00
commit 7b07e8c513

View File

@ -19,24 +19,21 @@ public class CapFilter : SubscribeFilter
/// <returns></returns>
public override Task OnSubscribeExecutingAsync(ExecutingContext context)
{
if (!context.DeliverMessage.Headers["sjzy-arguments-hash"].IsNullOrEmpty()) return Task.CompletedTask;
// 轨迹新增、更新要做幂等
if (!context.DeliverMessage.Headers["cap-msg-name"]
.IsIn(GlobalConst.TrackUpsertSubscribe, GlobalConst.TrackManualPushSubscribe))
return Task.CompletedTask;
var argumentJsonStr = context.Arguments.ToJson();
var hash = argumentJsonStr.GetHash();
context.DeliverMessage.Headers["sjzy-arguments-hash"] = hash;
if (!string.IsNullOrEmpty(argumentJsonStr))
{
using (RedisHelper.Client.Lock("Filter:" + hash, 10))
{
var isSkip = !string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExecuteFilter:{hash}"));
if (isSkip)
throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}");
}
var hash = GetHash(argumentJsonStr);
context.DeliverMessage.Headers["sjzy-arguments-hash"] = hash;
if (!string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExecuteFilter:{hash}")))
throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}");
}
return Task.CompletedTask;