DevBoi

[DDD] Axon framework 를 사용해보자 (1) 본문

Develop/[DDD]

[DDD] Axon framework 를 사용해보자 (1)

HiSmith 2023. 6. 1. 14:15
반응형

axon framework는 axon server와 axon framework가 있다.

axon framework 에서 이벤트 소싱이 발생될 때, axon-server가 아닌, 카프카나 외부 모듈을 사용할 수 있는데,

우선은 해당 axon-framework와, axon-sever를 통해서 진행해보자

axon framework의 아키텍처는 아래와 같다.

대게는 데이터를 변경하는 Command Event와, 조회용 Query에 대한 저장소가 분리 되어있다.

커맨드를 날리게 되면, 해당 Command Handling Component가 받아서, 처리를 한다.

처리 중에 외부 저장소에 영속이 필요한 경우 persist 작업을 거치고, 이러한 변화에 대한 이벤트를 이벤트 핸들링 Component가 받아 처리하는 방식이다.

 

그냥 CQRS의 구조이다.

 

1. axon-server 설치

docker run -d --name axonserver -p 8024:8024 -p 8124:8124 axoniq/axonserver

해당 Command를 사용하여, axonserver를 띄운다. 8024는 웹에서 스토어 상태를 볼수 있는 admin포트이고,

8124포트는 메시지를 주고받는 포트이다.

 

2. 프로세스 확인

3. 8024 웹사이트 확인

 

4. Gradle 의존성 추가

ext {
  axonVersion ="4.5.8"
}


implementation 'org.axonframework:axon-spring-boot-starter:4.5.8'
implementation 'org.axonframework:axon-configuration:4.5.8'

5. application.yml axon server 연동

server:
  port: 5000

axon:
  serializer:
    general: xstream
  axonserver:
    servers: 127.0.0.1:8124

6. 메인 클래스에, 핸들러 빈 추가

package com.smith.PqrsFramework;

import org.axonframework.commandhandling.CommandHandler;
import org.axonframework.eventhandling.EventHandler;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class PqrsFrameworkApplication {

	public static void main(String[] args) {
		SpringApplication.run(PqrsFrameworkApplication.class, args);
	}

  @CommandHandler
  protected void commandhandle(Object object){}

  @EventHandler
  public void eventhandle(Object object){}

}

 

7.Axon Server, 해당 앱 연결 확인

 

 

우선 이렇게 하면, 간단하게 설정이 끝난다.

다음에는 해당 소스를 기준으로 변경 및 디벨롭을 해보자

반응형