도메인 이벤트 발행
이벤추에이트 트램은 도메인 이벤트 발행/구독 API를 제공합니다. 도메인 이벤트란 비즈니스 객체를 생성, 수정, 삭제 시 애그리거트(비즈니스 객체)가 발생시킨 이벤트입니다(5장). 서비스는 DomainEventPublisher 인터페이스를 이용하여 도메인 이벤트를 발행합니다.
DomainEventPublisher domainEventPublisher; String accountId = ...; DomainEvent domainEvent = new AccountDebited(...); domainEventPublisher.publish("Account", accountId, Collections.singletonList(domainEvent));
서비스는 DomainEventDispatcher 클래스로 도메인 이벤트를 소비합니다.
DomainEventHandlers domainEventHandlers = DomainEventHandlersBuilder.forAggregateType("Order").onEvent(AccountDebited.class, domainEvent -> { ... }).build(); new DomainEventDispatcher("eventDispatcherId", domainEventHandlers, messageConsumer);
이벤추에이트 트램은 이벤트는 물론 커맨드/응답 기반의 메시징 등 고수준의 메시징 패턴도 지원합니다.