IRateLimit.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using Sers.Core.Module.Message;
  2. using Sers.Core.Module.Rpc;
  3. using Sers.ServiceCenter.Entity;
  4. using Vit.Core.Util.ComponentModel.SsError;
  5. namespace Sers.Gover.RateLimit
  6. {
  7. public interface IRateLimit
  8. {
  9. string rateLimitKey { get; }
  10. string rateLimitType { get; }
  11. /// <summary>
  12. /// 若返回不为null,则对应服务被限流(服务直接返回对应错误)
  13. /// </summary>
  14. /// <param name="rpcData"></param>
  15. /// <param name="requestMessage"></param>
  16. /// <returns></returns>
  17. SsError BeforeLoadBalancing(RpcContextData rpcData, ApiMessage requestMessage);
  18. /// <summary>
  19. /// 若返回不为null,则对应服务被限流(服务直接返回对应错误)
  20. /// </summary>
  21. /// <param name="rpcData"></param>
  22. /// <param name="requestMessage"></param>
  23. /// <param name="apiNode"></param>
  24. /// <returns></returns>
  25. SsError BeforeCallRemoteApi(RpcContextData rpcData, ApiMessage requestMessage, ApiNode apiNode);
  26. }
  27. }