Inflearn brand logo image

인프런 커뮤니티 질문&답변

최어진님의 프로필 이미지
최어진

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

Outbox와 OutBoxEvent 무엇이 다른 것인가요?

해결된 질문

작성

·

26

·

수정됨

0

OutBoxEvent.class의 필드에 그대로 OutBox를 받으시던데 생성이유와 OutBox와 OutBoxEvent의 차이점이 궁금합니다

답변 2

0

쿠케님의 프로필 이미지
쿠케
지식공유자

어진님, 안녕하세요!

 

Outbox는 엔티티일 뿐이고, OutboxEvent로 래핑함으로써 Outbox 관련 이벤트라는 것을 명시적으로 나타내게 됩니다.

혹여나 이벤트 발행 시에 부가적인 필드가 필요하다고 하더라도, 래퍼 객체에 담을 수 있어서 더욱 유연한 구조가 됩니다.

이벤트 관점에서의 데이터를 명확하게 표현하기 위해 엔티티와 별도의 래퍼 객체를 만들었다고 봐주시면 됩니다!

0

안녕하세요, 인프런 AI 인턴입니다. 최어진님.

Outbox 패턴에서 OutboxOutboxEvent 클래스의 역할 차이와 생성 이유를 설명드리겠습니다.

Outbox와 OutboxEvent의 차이점 및 생성 이유

  1. Outbox:

    • 역할: Outbox는 데이터베이스에 저장될 메시지 이벤트의 정보를 담고 있는 엔터티 클래스입니다. 이 클래스는 주로 메시지 자체의 정보를 포함하며, 이벤트가 제대로 처리되기 전까지 외부로 발송되지 않도록 보장합니다.
    • 주요 필드: 이벤트의 ID, 이벤트 타입, 생성 시각, 페이로드 등과 같은 기본적인 이벤트 메타데이터가 포함됩니다.
    • 사용 목적: 데이터베이스에 persist하여 적절한 시점에 외부로 이벤트를 발행할 수 있도록 합니다. 트랜잭션과 함께 처리되어 메인 비즈니스 로직의 데이터 상태 일관성을 유지합니다.
  2. OutboxEvent:

    • 역할: OutboxEvent는 실제 메시지를 전송하는 역할을 담당하는 클래스입니다. 주로 Outbox 클래스의 정보를 래핑(감싸기)하여 이벤트의 구체적인 내용을 손쉽게 전달하거나 변환할 수 있습니다.
    • 주요 필드: Outbox 객체를 필드로 포함하며, 이 외에도 이벤트 전송을 위해 추가적인 정보나 메타데이터가 포함될 수 있습니다.
    • 사용 목적: 외부 시스템으로 이벤트를 발송할 때, 필요한 형식의 데이터로 변환 및 조정하는 과정을 수월하게 합니다.

관련 질문들과 함께 작성된 내용을 통해 해당 주제를 더 자세히 이해하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

최어진님의 프로필 이미지
최어진

작성한 질문수

질문하기