Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Event Driven은 Eventsourcing을 하기 위한 선행과제이며 이것만 으로 큰 주제 이기 때문에 아래링크를 참고합니다포함하여 다양한 자료를 보시는것을 권장합니다. 

참고링크:

이벤트드라이븐이벤트드리븐(한글자료)

이벤트드라이븐이벤트드리븐(영문자료)

EventSourcing

메시지설계

Code Block
languagejava
themeEmacs
class Cmd implements Serializable {
    private static final long serialVersionUID = 1L;
    private final String data;

    public Cmd(String data) {
        this.data = data;
    }

    public String getData() {
        return data;
    }
}


class Evt implements Serializable {
    private static final long serialVersionUID = 1L;
    private final String data;

    public Evt(String data) {
        this.data = data;
    }

    public String getData() {
        return data;
    }
}

class ExampleState implements Serializable {
    private static final long serialVersionUID = 1L;
    private final ArrayList<String> events;

    public ExampleState() {
        this(new ArrayList<>());
    }

    public ExampleState(ArrayList<String> events) {
        this.events = events;
    }

    public ExampleState copy() {
        return new ExampleState(new ArrayList<>(events));
    }

    public void update(Evt evt) {
        events.add(evt.getData());
    }

    public int size() {
        return events.size();
    }

    @Override
    public String toString() {
        return events.toString();
    }
}

...

이벤트 소싱의 Flow를 간단하게 확인할수 있는 TestCode입니다. 특정한 기능 목적을 두지는 않았으며

이 코드는 장바구니에 그대로 활용될수 있으며,  장바구니에 상품을 않았지만, 장바구니에 활용될수 있으며 예를 들면  장바구니를 담고뺀 순서를 알수 있으며( 장바구니의 이벤트를 기록및 재생)

마지막 장바구니에 담긴 물건의 최종상태도 알수가 있으며, 있습니다.( 이것을 어떻게 서비스할지는, 이벤트를 소비하는 서비스의  역활  )

필요에 따라 분산된 저장소를 통해 복원도 가능하게됩니다.저장소에 확장이 가능합니다.   


참고자료: