이상한 패턴이 감지되면 전자 메일을 통해 사용자에게 경고하는 금융 응용 프로그램을위한 작은 보안 하위 시스템을 구현한다고 가정합니다. 이 예에서 패턴은 세 가지 트랜잭션으로 구성됩니다. 보안 서브 시스템은 기본 시스템의 이벤트를 큐에서 읽을 수 있습니다.
내가 얻고 싶은 것은 패턴의 현재 상태를 모델링하는 중간 표현없이 시스템에서 발생하는 이벤트의 직접적인 결과 인 경고입니다.
- 모니터링 활성화
- 거래 처리
- 거래 처리
- 거래 처리
- 경고 발생 (ID : 123)
- 알림 이메일 전송 (ID : 123)
- 거래 처리
이 점을 염두에두면 이벤트 소싱이 여기에 잘 적용될 수 있다고 생각했지만 명확한 대답이없는 질문이 있습니다. 예제에서 트리거 된 경고는 분명한 부작용이 있으며 전자 메일을 보내야하며 상황은 한 번만 발생해야합니다. 따라서 집계의 모든 이벤트를 재생할 때 발생하지 않아야합니다.
어느 정도까지는 CQRS / 이벤트 소싱 문헌에서 여러 번 보았던 쿼리 측에서 생성 된 구체화와 유사하게 전송되어야하는 전자 메일을 볼 수 있지만 미묘한 차이는 없습니다.
이 문헌에서, 질의 측은 모든 이벤트를 다시 읽는 주어진 시점에서 상태의 구체화를 생성 할 수있는 이벤트 핸들러로부터 구축된다. 그러나이 경우에는 앞에서 설명한 이유로 정확히 달성 할 수 없습니다. 모든 상태가 일시적이라는 아이디어는 여기서 잘 적용되지 않습니다 . 어딘가에 경고가 전송되었다는 사실을 기록해야합니다.
나에게 쉬운 해결책은 이전에 트리거 된 경고의 기록을 유지하는 다른 테이블이나 구조를 갖는 것입니다. ID가 있으므로 이전에 동일한 ID를 가진 경고가 발행되었는지 확인할 수 있습니다. 이 정보가 있으면 SendAlertCommand를 dem 등원으로 만듭니다. 여러 명령을 실행할 수 있지만 부작용은 한 번만 발생합니다.
이 솔루션을 염두에 두었더라도 이것이이 문제에 대해이 아키텍처에 문제가 있음을 암시하는 것은 알 수 없습니다.
- 내 접근 방식이 맞습니까?
- 이에 대한 자세한 정보를 찾을 수있는 곳이 있습니까?
이것에 대한 더 많은 정보를 찾을 수 없었습니다. 어쩌면 나는 잘못된 문구를 사용하고 있었을 것입니다.
정말 고맙습니다!