opt:优化cap filter
This commit is contained in:
parent
b5f7f86664
commit
33c36bed10
@ -19,24 +19,21 @@ public class CapFilter : SubscribeFilter
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public override Task OnSubscribeExecutingAsync(ExecutingContext context)
|
public override Task OnSubscribeExecutingAsync(ExecutingContext context)
|
||||||
{
|
{
|
||||||
|
if (!context.DeliverMessage.Headers["sjzy-arguments-hash"].IsNullOrEmpty()) return Task.CompletedTask;
|
||||||
|
|
||||||
// 轨迹新增、更新要做幂等
|
// 轨迹新增、更新要做幂等
|
||||||
if (!context.DeliverMessage.Headers["cap-msg-name"]
|
if (!context.DeliverMessage.Headers["cap-msg-name"]
|
||||||
.IsIn(GlobalConst.TrackUpsertSubscribe, GlobalConst.TrackManualPushSubscribe))
|
.IsIn(GlobalConst.TrackUpsertSubscribe, GlobalConst.TrackManualPushSubscribe))
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
var argumentJsonStr = context.Arguments.ToJson();
|
var argumentJsonStr = context.Arguments.ToJson();
|
||||||
var hash = argumentJsonStr.GetHash();
|
|
||||||
|
|
||||||
context.DeliverMessage.Headers["sjzy-arguments-hash"] = hash;
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(argumentJsonStr))
|
if (!string.IsNullOrEmpty(argumentJsonStr))
|
||||||
{
|
{
|
||||||
using (RedisHelper.Client.Lock("Filter:" + hash, 10))
|
var hash = GetHash(argumentJsonStr);
|
||||||
{
|
context.DeliverMessage.Headers["sjzy-arguments-hash"] = hash;
|
||||||
var isSkip = !string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExecuteFilter:{hash}"));
|
if (!string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExecuteFilter:{hash}")))
|
||||||
if (isSkip)
|
throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}");
|
||||||
throw new BusinessException(ErrorCode, $"检测到重复消费,消费参数:{argumentJsonStr}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user