TsgcWSCircuitBreaker属性 › Classification

Classification 属性

决定哪些异常被记录为失败、哪些被忽略的规则。

语法

property Classification: TsgcCircuitBreakerClassification
      read FClassification write SetClassification;

默认值

备注

只有已记录的异常才会推进失败计数器,业务级错误(如 HTTP 4xx)不应触发断路,而传输级错误和 HTTP 5xx 应该触发。每个抛出的异常被转换为 ClassName: Message 字符串,首先与 IgnoreExceptions 中的模式比较(匹配则静默丢弃),然后与 RecordAsFailure 中的模式比较(匹配则记录)。当 RecordAsFailure 为空时,所有未被忽略的异常都被记录。MatchModeTsgcCircuitBreakerExceptionMatch)选择模式比较方式:cemExactcemContains(默认)、cemStartsWithcemWildcard(支持 *?)。典型用法:记录 HTTP 5xx 和 timeout,忽略 HTTP 400/401/404,以避免验证和授权失败打开断路器。

示例

// Record HTTP 5xx and timeouts as failures; ignore client-side 4xx
sgcWSCircuitBreaker1.Classification.MatchMode := cemContains;
sgcWSCircuitBreaker1.Classification.RecordAsFailure.Add('HTTP/1.1 500');
sgcWSCircuitBreaker1.Classification.RecordAsFailure.Add('HTTP/1.1 502');
sgcWSCircuitBreaker1.Classification.RecordAsFailure.Add('HTTP/1.1 503');
sgcWSCircuitBreaker1.Classification.RecordAsFailure.Add('HTTP/1.1 504');
sgcWSCircuitBreaker1.Classification.RecordAsFailure.Add('timeout');
sgcWSCircuitBreaker1.Classification.IgnoreExceptions.Add('HTTP/1.1 400');
sgcWSCircuitBreaker1.Classification.IgnoreExceptions.Add('HTTP/1.1 401');
sgcWSCircuitBreaker1.Classification.IgnoreExceptions.Add('HTTP/1.1 404');

返回属性