더북(TheBook)

CreateOrderSaga 생성자는 사가 데피니션을 생성하여 sagaDefinition 필드에 세팅합니다. getSagaDefinition()은 사가 데피니션을 반환하는 메서드입니다. 사가 세 번째 단계 데피니션(예제 4-3)에서는 KitchenService를 호출하여 티켓을 생성하고 이 티켓을 취소하는 보상 트랜잭션을 정의합니다. step(), invokeParticipant(), onReply(), withCompensation()은 이벤추에이트 트램 사가에서 기본 제공되는 DSL의 일부입니다.

예제 4-3 사가 3단계 데피니션

public class CreateOrderSaga ...

  public CreateOrderSaga(..., KitchenServiceProxy kitchenService,
            ...) {
    ...
    .step()
      .invokeParticipant(kitchenService.create,  ← 포워드 트랜잭션 정의
                CreateOrderSagaState::makeCreateTicketCommand)
      .onReply(CreateTicketReply.class,
                CreateOrderSagaState::handleCreateTicketReply) ← 성공 응답을 수신하면 handleCreateTicketReply( ) 호출
      .withCompensation(kitchenService.cancel, ← 보상 트랜잭션 정의
                CreateOrderSagaState::makeCancelCreateTicketCommand)
    ...
    ;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.