주소 대신 Subject로 연결
발행자는 Subject에 메시지를 보내고 구독자는 관심 있는 Subject를 받는다. 서버가 전달을 중개하므로 응용끼리 서로의 위치를 직접 관리하는 부담을 줄인다. 계정은 같은 서버 환경에서 메시징 영역을 분리하는 데 사용한다.
기본 전달과 저장 계층
Core NATS는 발행 당시 연결된 구독자에게 메시지를 전달하며 기본 동작은 최대 한 번 전달이다. JetStream은 저장 계층을 추가해 메시지를 나중에 다시 읽을 수 있게 한다. 보내는 쪽과 받는 쪽이 같은 순간에 연결돼 있어야 하는 제약도 줄인다.
재생 위치와 수신 확인
JetStream의 스트림은 Subject에 해당하는 메시지를 보관한다. 소비자는 스트림을 읽는 위치를 별도로 유지하며 수신 확인을 통해 진행한다. 확인되지 않은 메시지가 재전달될 수 있으므로 적어도 한 번 전달과 중복 가능성을 함께 이해해야 한다.
관련 문서
Apache Kafka / Apache Pulsar / RabbitMQ / CloudEvents / AsyncAPI / OpenTelemetry