일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 카프카
- Flutter
- 플러터 개발
- nestjs스터디
- 알고리즘공부
- Axon framework
- nestjs공부
- nestjs
- 스프링
- 기술면접공부
- 기술공부
- 자료구조공부
- JPA 공부
- 플러터 공부
- 자바공부
- 스프링 공부
- JPA예제
- DDD
- JPA
- querydsl
- 스프링부트
- 코테준비
- JPA공부
- Kafka
- 코테공부
- 스프링부트공부
- K8S
- 프로그래머스
- JPA스터디
- 스프링공부
- Today
- Total
목록Axon framework (6)
DevBoi
Axon framework 에서 command를 사용할때는 CommandBus, Event는 EventBus를 통해서 전달되었다 Query도 QueryBus를 통해서 해당 구현에 대한 Handler로 전달이 된다. 1. pointing query 해당 관련되서, 가장 간단한 구조이다. 각 핸들러를 미리 App에서 등록하고, 해당 요청이 오면 알맞은 Handler를 통해서 결과를 반환하는 것이다. 2. Routing 구조 멀티 모듈을 사용할때는 위와 같은 구조로 이루어 진다. 해당 관련되서, Axon Server에서 라우팅 테이블에 관련된 queryHandler를 등록해서, 사용자가 요청이 오면, 알맞은 앱으로 전달 및 결과를 요청 앱에 등록한다. 우선 해당 간단한 쿼리 클래스를 만들자 public cla..
공식 문서를 참조해서, 정리했다. Event Bus, Event Store의 개념에 대해서 정리를 하고, 쿼리에 대한 개념을 정리해보자. 1) Event Store Event를 읽고 쓰는데 있어, EventStore가 기본적으로 갖출 조건이 있다. 1. 이벤트는 추가만 가능하다, 입력 삭제,수정이 불가능하다. 2. 여러 이벤트가 하나의 트랜잭션에서 처리가 되어야 한다면, 트랜잭션 단위로 커밋,롤백 되어야한다. 3. 커밋된 이벤트는 유실되어서는 안된다. 4. 발행된 모든 Event중 Aggregate별로 데이터를 읽을 수 있어야 한다. 5. 모든 이벤트는 삽입된 순서대로 읽기가 가능해야한다. 6. Snapshot 저장소 지원 이벤트 저장소에, Aggregate에 대한 ID와 시퀀스 번호가 있다. 그리고 해..
일단 Query를 사용해봤다. 다음에는 Event를 사용해보자 마지막에 분석 및 기타 기능에 대해서 구현 및 포스팅을 할 것같다. 이번에는 생성에 대한 컨트롤러 단, 부터 생성을 해보자. 단순히 한개의 OrderCount를 늘린다. CQRS는 커맨드와 조회를 나눠, 조회와 데이터 변경에 대한 관심사를 나눈다. 1) OrderController @RestController public class OrderController { @Autowired private CommandGateway commandGateway; @PostMapping("/order/{order-name}") public CompletableFuture incrementProduct( @PathVariable("order-name") S..
이제 어느정도 구현에 대한 감을 잡았다. 실제적으로 사용하기 위한 코드로, Service부터 따라가며 구현을 리팩토링 해보자 우선 서비스 부터 다시 만들어야 한다. 분석기반으로 소스를 하나씩 구현해보자, 단순히 메소드 하나만 우선 사용을 할 예정이다. 1) OrderQueryService @Service @RequiredArgsConstructor public class OrderQueryService { private final QueryGateway queryGateway; public CompletableFuture findAllOrders(){ return queryGateway.query(new FindAllOrderedProductsQuery(), ResponseTypes.multipleIns..
간단하게, 음식과 관련된 애플리케이션을 만들어보자, 일단 구조는 기본적으로 잡아보자. Command,coreapi,query 단순히 이렇게 3가지 패키지만 만들어보자 기능은 뭐 단순히 신규 주문생성, 주문 확정,주문 배송 이렇게 두면 될 듯하다. 일단 생성한 커맨드는 아래 3개와 같다. 1) Commands @RequiredArgsConstructor public class ConfirmOrderCommand { @TargetAggregateIdentifier private final String orderId; } @RequiredArgsConstructor @Getter @ToString public class CreateOrderCommand { @TargetAggregateIdentifier pr..
axon framework는 axon server와 axon framework가 있다. axon framework 에서 이벤트 소싱이 발생될 때, axon-server가 아닌, 카프카나 외부 모듈을 사용할 수 있는데, 우선은 해당 axon-framework와, axon-sever를 통해서 진행해보자 axon framework의 아키텍처는 아래와 같다. 대게는 데이터를 변경하는 Command Event와, 조회용 Query에 대한 저장소가 분리 되어있다. 커맨드를 날리게 되면, 해당 Command Handling Component가 받아서, 처리를 한다. 처리 중에 외부 저장소에 영속이 필요한 경우 persist 작업을 거치고, 이러한 변화에 대한 이벤트를 이벤트 핸들링 Component가 받아 처리하는 ..