Web
수정·
[Spring CQRS] Axon을 이용한 CQRS 시작 - 1
본 테스트 환경은 M2 Macbook Air를 이용하였습니다.
우선 아래 docker-compose 코드를 이용하여
Postgres와 Axon Server를 실행시킵니다
version: "3.0"
services:
postgres-command:
image: postgres:latest
environment:
- POSTGRES_DB=commands
- POSTGRES_PASSWORD=admin
- POSTGRES_USER=admin
- PG_DATA=/var/lib/postgresql/data
volumes:
- "$HOME/.volumes/pg_commands:/var/lib/postgresql/data"
ports:
- "35432:5432"
axon:
image: axoniq/axonserver:4.5.7-dev-arm
ports:
- "8024:8024"
- "8124:8124"
그리고 spring boot project의 application.yaml 을 다음과 같이 설정합니다.
spring:
application:
name: blog-cqrs-command
datasource:
platform: postgres
url: jdbc:postgresql://localhost:35432/commands
username: admin
password: admin
driverClassName: org.postgresql.Driver
jpa:
# database: POSTGRESQL
# properties:
# hibernate:
# dialect: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: update
show-sql: true
axon:
serializer:
general: xstream
axonserver:
servers: localhost:8124
다음과 같이 설정 한 뒤 CommandApplication.kt 파일에서 아래와 같이 설정합니다.
package kr.dohoonkim.blog.command
import org.axonframework.commandhandling.CommandHandler
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class CommandApplication
fun main(args : Array<String>) {
runApplication<CommandApplication>(*args)
}
@CommandHandler
fun CommandApplication.test(command : Unit) {
print("command handler")
}
이 코드를 실행시켰을 때 정상 동작할 경우 아래와 같이 로그가 뜹니다.
2023-06-26T20:49:42.258+09:00 INFO 48378 --- [ main] i.a.a.c.impl.AxonServerManagedChannel : Requesting connection details from localhost:8124
2023-06-26T20:49:42.525+09:00 INFO 48378 --- [ main] i.a.a.c.impl.AxonServerManagedChannel : Successfully connected to localhost:8124
2023-06-26T20:49:42.529+09:00 INFO 48378 --- [ main] i.a.a.connector.impl.ControlChannelImpl : Connected instruction stream for context 'default'. Sending client identification
이후 브라우저에서 http://localhost:8024/ 로 연결하여 axon server 대시보드에 연결한 뒤,
overview 를 클릭하면 아래와 같은 그림이 뜬다면, 정상적으로 연결된 상태입니다.
