주요 콘텐츠로 건너뛰기

재시도

Glasswall Halo는 HTTP가 아닌 비동기 메시지를 사용해 통신하는 여러 서비스로 구성됩니다. 이러한 서비스에 대해, 메시지 처리 중 오류가 발생했을 때 플랫폼이 장애를 처리하는 방식에 관해 고려했습니다.

동기식 API 및 비동기식 API

API는 Glasswall Engine의 응답 큐를 구독하지만, 실패가 발생하는 경우 http 클라이언트에 오류 응답이 반환됩니다.

Engine 서비스

아키텍처는 RabbitMQ reply-to queues를 사용하는 요청/응답 방식입니다. 이는 장애가 발생한 경우에도 메시지를 처리할 때 실패 이유를 포함한 응답 메시지를 계속 전송한다는 의미입니다.

보고서 집계기

보고서 집계기는 표준 메시지 소비자로 동작하며, 메시지 재시도를 가능하게 하기 위한 추가 기능이 도입되었습니다. 이 서비스에는 두 가지 구성 옵션이 있습니다.

Retrymessages는 기본값이 true인 bool로, 메시지 재시도 기능을 활성화합니다. 이 기능을 끄면 실패한 모든 메시지는 즉시 dead letter queue로 이동됩니다.

Messagettl은 메시지가 큐에 머무를 수 있는 초 단위 시간을 나타내는 정수입니다. 이는 실패한 메시지가 무한히 재시도되어 메시지가 적체되는 것을 방지하기 위한 것입니다. 메시지의 time to live가 경과하면 해당 메시지는 dead letter queue로 이동됩니다. 코드 기본값은 30초입니다.

보고서 집계기의 기능은 클라이언트가 파일을 수신하는 데 필수적이지 않으며, 집계된 보고서 데이터를 생성하는 데 사용됩니다. 따라서 보고서 집계기 메시지가 dead lettering되는 것은 치명적인 장애로 간주되지 않으며, dead letter는 허용됩니다(극단적인 경우에만).