CreateOrdersagastate 클래스
CreateOrderSagaState(예제 4-4)는 사가 인스턴스의 상태를 나타낸 클래스입니다. OrderService가 이 클래스의 인스턴스를 생성하고, 이벤추에이트 트램 사가 프레임워크가 이 인스턴스를 DB에 저장합니다. CreateOrderSagaState의 주 임무는 사가 참여자에게 보낼 메시지를 만드는 일입니다.
예제 4-4 CreateOrdersagastate는 사가 인스턴스 상태를 저장한다
public class CreateOrderSagaState {
private Long orderId;
private OrderDetails orderDetails;
private long ticketId;
public Long getOrderId() {
return orderId;
}
private CreateOrderSagaState() {
}
public CreateOrderSagaState(Long orderId, OrderDetails orderDetails) { ← Orderservice가 호출하여 CreateOrdersagastate 인스턴스를 생성
this.orderId = orderId;
this.orderDetails = orderDetails;
}
CreateTicket makeCreateTicketCommand() { ← CreateTicket 커맨드 메시지 생성
return new CreateTicket(getOrderDetails().getRestaurantId(),
getOrderId(), makeTicketDetails(getOrderDetails()));
}
void handleCreateTicketReply(CreateTicketReply reply) { ← 새로 만든 티켓 ID 저장
logger.debug("getTicketId {}", reply.getTicketId());
setTicketId(reply.getTicketId());
}
CancelCreateTicket makeCancelCreateTicketCommand() { ← CancelCreateTicket 커맨드 메시지 생성
return new CancelCreateTicket(getOrderId());
}
...
CreateOrderSaga는 CreateOrderSagaState를 호출하여 커맨드 메시지를 생성하고, 생성된 메시지를 KitchenServiceProxy 같은 클래스의 끝점으로 전달합니다.