TsgcWSCircuitBreaker › Properties › Classification
Rules that decide which exceptions are recorded as failures and which are ignored.
property Classification: TsgcCircuitBreakerClassification
read FClassification write SetClassification;
—
Only recorded exceptions advance the failure counters — business-level errors such as HTTP 4xx should not trip the circuit, whereas transport-level errors and HTTP 5xx should. Each raised exception is turned into a ClassName: Message string and compared against the patterns in IgnoreExceptions first (matches are silently dropped), then against RecordAsFailure (matches are recorded). When RecordAsFailure is empty, every non-ignored exception is recorded. MatchMode (TsgcCircuitBreakerExceptionMatch) selects how patterns are compared: cemExact, cemContains (default), cemStartsWith or cemWildcard (supports * and ?). Typical use: record HTTP 5xx and timeout, ignore HTTP 400/401/404 so validation and authorization failures do not open the circuit.
// 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');