Skip to content

Error Handling

Retry, fallback, and circuit breaker patterns.

3 modules

ModuleDescription
Wyłącznik ObwoduChroń przed kaskadowymi awariami za pomocą wzorca wyłącznika obwodu
AlternatywaPodaj wartość alternatywną, gdy operacja się nie powiedzie
PonówOpakuj operacje z konfigurowalną logiką ponawiania

Modules

Wyłącznik Obwodu

error.circuit_breaker

Chroń przed kaskadowymi awariami za pomocą wzorca wyłącznika obwodu

Parameters:

NameTypeRequiredDefaultDescription
actionobjectYes-Akcja do ochrony za pomocą wyłącznika obwodu
circuit_idstringYes-Akcja do ochrony za pomocą wyłącznika obwodu
failure_thresholdnumberNo5Unikalny identyfikator dla tego obwodu (do śledzenia stanu)
failure_window_msnumberNo60000Okno czasowe do liczenia awarii
recovery_timeout_msnumberNo30000Czas przed próbą odzyskania (stan półotwarty)
success_thresholdnumberNo3Udane żądania potrzebne w stanie półotwartym do zamknięcia obwodu
fallbackobjectNo-Alternatywna akcja, gdy obwód jest otwarty
fallback_valueanyNo-Alternatywna akcja, gdy obwód jest otwarty
track_errorsarrayNo[]Stała wartość do zwrotu, gdy obwód jest otwarty

Output:

FieldTypeDescription
__event__stringTylko te kody błędów liczą się do progu (puste = wszystkie)
resultanyZdarzenie do kierowania (sukces/otwarty obwód/alternatywa)
circuit_statestringWynik z akcji lub alternatywy
failure_countnumberAktualny stan obwodu (zamknięty/otwarty/półotwarty)
last_failure_timestringAktualna liczba awarii w oknie
circuit_opened_atstringZnacznik czasu ostatniej awarii

Example: Example

yaml
action: {"module": "http.post", "params": {"url": "https://api.example.com/submit"}}
circuit_id: example-api
failure_threshold: 5
failure_window_ms: 60000
recovery_timeout_ms: 30000

Example: Example

yaml
action: {"module": "http.get", "params": {"url": "https://api.example.com/data"}}
circuit_id: data-api
failure_threshold: 3
fallback: {"module": "cache.get", "params": {"key": "data_cache"}}

Example: Example

yaml
action: {"module": "database.query", "params": {"query": "SELECT * FROM users"}}
circuit_id: database
failure_threshold: 3
fallback_value: {"users": [], "from_cache": false}

Alternatywa

error.fallback

Podaj wartość alternatywną, gdy operacja się nie powiedzie

Parameters:

NameTypeRequiredDefaultDescription
operationobjectNo-Główna operacja do wykonania
fallback_valueanyNo-Główna operacja do wykonania
fallback_operationobjectNo-Stała wartość do zwrotu w przypadku awarii
fallback_onarrayNo[]Alternatywna operacja do wykonania w przypadku awarii
include_error_infobooleanNoTrueKody błędów, które wywołują alternatywę (puste = wszystkie błędy)
log_fallbackbooleanNoTrueDołącz oryginalne informacje o błędzie do wyniku

Output:

FieldTypeDescription
resultanyZaloguj, gdy używana jest alternatywa
used_fallbackbooleanWynik z głównej operacji lub alternatywy
sourcestringCzy użyto alternatywy
original_errorobjectŹródło wyniku (główna/alternatywna_wartość/alternatywna_operacja)

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/items"}}
fallback_value: []

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/config"}}
fallback_operation: {"module": "cache.get", "params": {"key": "config_cache"}}

Example: Example

yaml
operation: {"module": "api.call", "params": {"endpoint": "/data"}}
fallback_value: {"status": "unavailable"}
fallback_on: ["NETWORK_ERROR", "TIMEOUT_ERROR"]

Ponów

error.retry

Opakuj operacje z konfigurowalną logiką ponawiania

Parameters:

NameTypeRequiredDefaultDescription
operationobjectYes-Operacja do ponowienia (ID modułu i parametry)
max_retriesnumberNo3Operacja do ponowienia (ID modułu i parametry)
initial_delay_msnumberNo1000Maksymalna liczba prób ponawiania
max_delay_msnumberNo30000Początkowe opóźnienie przed pierwszym ponowieniem
backoff_multipliernumberNo2.0Mnożnik dla wykładniczego opóźnienia (np. 2 podwaja opóźnienie przy każdej próbie)
jitterbooleanNoTrueDodaj losowy jitter do opóźnienia, aby zapobiec burzy
retry_onarrayNo[]Dodaj losowy jitter do opóźnienia, aby zapobiec burzy
timeout_per_attempt_msnumberNo0Lista kodów błędów do ponowienia (pusta = ponów wszystkie)

Output:

FieldTypeDescription
__event__stringLimit czasu dla każdej próby (0 bez limitu)
resultanyZdarzenie dla routingu (sukces/wyczerpanie)
attemptsnumberZdarzenie dla routingu (sukces/wyczerpanie)
total_delay_msnumberWynik z udanej próby
errorsarrayLiczba wykonanych prób

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/data"}}
max_retries: 3

Example: Example

yaml
operation: {"module": "database.query", "params": {"query": "SELECT * FROM users"}}
max_retries: 5
initial_delay_ms: 2000
backoff_multiplier: 2.0
jitter: true

Example: Example

yaml
operation: {"module": "api.call", "params": {"endpoint": "/submit"}}
max_retries: 3
retry_on: ["NETWORK_ERROR", "TIMEOUT_ERROR", "SERVICE_UNAVAILABLE"]

Released under the Apache 2.0 License.