Page History
...
- SSE(Simple Sent Event)를 이용해 구독(sub)을 하고
- API 액터모델을 이용해 발행(pub)을 할수 있습니다.
ExacltlyOnce Delivery
Akka의 Actor 메시지전송은 기본적으로 AtMostOnce 로 동작합니다. 전송보장을 위해 별도 설계를 할수도 있겠지만
중요 도메인 이벤트인경우 Kafka와 연동하는것을 권장하며 Reactive Stream(AkkaStream)을 통해 액터모델은 외부장치와의 연결도 유연하게 할수 있습니다.
Link : https://pekko.apache.org/docs/pekko-connectors-kafka/current/
At-Most-Once Delivery란?
- 메시지가 최대 한 번만 전달됨을 보장합니다.
- 네트워크 장애 또는 기타 원인으로 인해 메시지가 손실될 수 있음.
- 메시지 중복이 발생하지 않음.
- 성능이 가장 우수하지만, 신뢰성이 낮음.
- 손실이 허용되는 경우
- 예: 모니터링 시스템(일부 로그 손실이 치명적이지 않음)
- 예: 게임 로직에서의 이벤트(일시적인 위치 업데이트)
- 고성능이 중요한 경우
- ACK 기반 재전송이 필요 없기 때문에 메시지 처리 속도가 중요할 때 사용
- 데이터가 중요하지 않거나, 외부에서 보완할 수 있는 경우
- 예: UI 알림 전송 (사용자가 새로고침하면 다시 불러올 수 있음)
At-Most-Once 방식의 메시지 손실 문제를 보완하기 위해 다음과 같은 방법을 고려할 수 있음.
At-Least-Once Delivery
- 재전송을 통해 메시지 전달을 보장하지만, 중복이 발생할 수 있음.
- Akka에서는
ask
패턴 또는 Akka Persistence(이벤트 소싱) 사용.
Exactly-Once Delivery
- 중복 제거 로직을 추가하여 메시지가 정확히 한 번만 처리되도록 보장.
- Kafka 등의 외부 메시지 브로커와 조합하여 구현.
Akka Reliable Delivery 사용
- Akka의
Reliable Delivery
기능을 활용하면 At-Least-Once 또는 Exactly-Once 보장을 구현할 수 있음.
- Akka의
메시지 브로커에서 일반적으로 지원하는 pub/sub 방식도 akka가 지원하는 분산처리 장치중 하나로 여기서는 자세한 설명이 생략되었으나~
...