Skip to content

Error Handling

Retry, fallback, and circuit breaker patterns.

3 modules

ModuleDescription
회로 차단기회로 차단기 패턴으로 연쇄 실패를 방지합니다
대체작업 실패 시 대체 값을 제공합니다
재시도구성 가능한 재시도 로직으로 작업 감싸기

Modules

회로 차단기

error.circuit_breaker

회로 차단기 패턴으로 연쇄 실패를 방지합니다

Parameters:

NameTypeRequiredDefaultDescription
actionobjectYes-회로 차단기로 보호할 작업
circuit_idstringYes-회로 차단기로 보호할 작업
failure_thresholdnumberNo5이 회로의 고유 식별자 (상태 추적용)
failure_window_msnumberNo60000실패를 계산할 시간 창
recovery_timeout_msnumberNo30000복구 시도 전의 시간 (반열림 상태)
success_thresholdnumberNo3회로를 닫기 위해 반열림 상태에서 필요한 성공 요청 수
fallbackobjectNo-회로가 열렸을 때의 대체 작업
fallback_valueanyNo-회로가 열렸을 때의 대체 작업
track_errorsarrayNo[]회로가 열렸을 때 반환할 고정 값

Output:

FieldTypeDescription
__event__string이 오류 코드만 임계값에 포함 (비어 있으면 모두 포함)
resultany라우팅 이벤트 (성공/회로 열림/대체 작업)
circuit_statestring작업 결과 또는 대체 작업
failure_countnumber회로의 현재 상태 (닫힘/열림/반열림)
last_failure_timestring현재 창에서의 실패 횟수
circuit_opened_atstring마지막 실패의 타임스탬프

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}

대체

error.fallback

작업 실패 시 대체 값을 제공합니다

Parameters:

NameTypeRequiredDefaultDescription
operationobjectNo-시도할 기본 작업
fallback_valueanyNo-시도할 기본 작업
fallback_operationobjectNo-실패 시 반환할 고정 값
fallback_onarrayNo[]실패 시 실행할 대체 작업
include_error_infobooleanNoTrue대체 작업을 트리거하는 오류 코드 (비어 있으면 모든 오류)
log_fallbackbooleanNoTrue출력에 원래 오류 정보를 포함

Output:

FieldTypeDescription
resultany대체 작업이 사용될 때 기록
used_fallbackboolean기본 작업 또는 대체 작업의 결과
sourcestring대체 작업이 사용되었는지 여부
original_errorobject결과의 출처 (기본/대체 값/대체 작업)

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"]

재시도

error.retry

구성 가능한 재시도 로직으로 작업 감싸기

Parameters:

NameTypeRequiredDefaultDescription
operationobjectYes-재시도할 작업 (모듈 ID 및 매개변수)
max_retriesnumberNo3재시도할 작업 (모듈 ID 및 매개변수)
initial_delay_msnumberNo1000최대 재시도 횟수
max_delay_msnumberNo30000첫 번째 재시도 전 초기 지연
backoff_multipliernumberNo2.0지수 백오프에 대한 배수 (예: 2는 각 재시도마다 지연을 두 배로)
jitterbooleanNoTrue우르르 몰림을 방지하기 위해 지연에 랜덤 지터 추가
retry_onarrayNo[]우르르 몰림을 방지하기 위해 지연에 랜덤 지터 추가
timeout_per_attempt_msnumberNo0재시도할 오류 코드 목록 (비어 있으면 모두 재시도)

Output:

FieldTypeDescription
__event__string각 시도의 타임아웃 (0은 타임아웃 없음)
resultany라우팅 이벤트 (성공/소진됨)
attemptsnumber라우팅 이벤트 (성공/소진됨)
total_delay_msnumber성공적인 시도의 결과
errorsarray시도 횟수

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.