기본 콘텐츠로 건너뛰기

Axon Framework

Command는 command handler를 실행하기 위한 모든 데이터를 포함
Command Bus는 command를 받아 Command Handler로 라우팅 해줌
Command Handler에서 유형에 관계 없이 logging, validation, authorization을 함
Command Handler는 도메인 오브젝트(Aggregates)를 리파지토리에서 검색하고 상태를 변경 시킵니다.
Aggregates는 비즈니스 로직을 포함하고 있습니다.
Aggregates의 상태 변경으로 도메인 이벤트가 발생합니다.

리파지토리는 Aggregates에 접근할수 있도록 제공합니다.
고유 식별자(Unique identifier)를 사용하여  Aggregates를 조회할수 있도록 되어 있습니다.
Event들에 대한 상태 변경사항을 저장 할 수 있습니다.

Event Bus는 관심있는 Event Listener에게 이벤트를 전달합니다. (동기/비동기)
Event Listener에서는 이벤트를 받고 다룹니다.
몇몇의 핸들러는 쿼리에 사용되는 데이터 소스를 업데이트 하거나 외부 시스템에 메시지를 보냅니다.
이런 식으로 Event Listener를 추가하는 방식으로 컴포넌트 간 느슨하게 결합할 수 있으며 확장할 수 있습니다.

사용자 인터페이스와 data source 사이에 Thin data layer는 쿼리 구현에 대한 인터페이스를 제공합니다.
이 데이터 계층은 쿼리 결과가 포함된 읽기 전용 DTO를 반환합니다.

UI에 따라 DTO가 결정되며 Thin data layer는 UI와 data source 사이에서 쿼리 구현에 대한 인터페이스를 제공합니다.
이 계층에서는 쿼리 결과가 포함된 읽기 전용 DTO를 반환합니다.

Benefits
  • Simplify CQRS based applications
  • It has been built and tested against Java8
  • Support for Spring Boot AutoConfiguration
  • Provide a testing (BDD) infrastructure
Drawbacks
  • Still Not Support Cassandra, Kafka

댓글

이 블로그의 인기 게시물

[JPA] deleted instance passed to merge

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.ObjectDeletedException:   deleted instance passed to merge: 위와 같은 에러가 발생... em.remove(user)를 호출하면 user는 영속성 컨텍스트에서 제거된다. (Object is already marked for being deleted) 이후 트랜잭션을 커믹해서 플러시를 호출하면 실제 데이터베이스에 삭제 쿼리를 전달한다. 하지만 삭제된 엔티티를 한 트랜잭션내에서 다시 삭제할려고하면 해당 익셉션이 발생한다. 참조 : 자바 ORM 표준 JPA 프로그래밍

Spring Redis Cluster Configuration

# build.gradle compile  'org.springframework.data:spring-data-redis' compile  'biz.paluch.redis:lettuce:4.5.0.Final' #RedisConfiguration @Configuration @ EnableRedisRepositories ( basePackageClasses  = { MyAppDomains. class  }) public class  RedisConfiguration {      @Value ( "${spring.redis.host}" )      private  String  redisHost ;      @Value ( "${spring.redis.port}" )      private int  redisPort ;      @Bean          public  RedisConnectionFactory  myRedisConnectionFactory () {         RedisClusterConfiguration clusterConfig =  new  RedisClusterConfiguration() ;          clusterConfig.clusterNode( redisHost ,  redisPort ) ;         re...

xsl-fo를 이용한 pdf 생성기술

1. PDF 생성 기술 개발을 위해 적용가능한 오픈소스 1)  pdfbox - http://pdfbox.apache.org/ - License : Apache License Version 2.0 2)  iText - http://itextpdf.com/ - License : APGL License 3)  Apache FOP - http://xmlgraphics.apache.org/fop/ -> 유지보수 비용은 높지만, 무료이며 한글이 출력 가능한 Apache FOP를 적용 2. XSL-FO를 이용하여 PDF를 어떻게 생성 하는지 설명 * XSL-FO의 기본 프로세스 용어 설명 1) XSLT - XML 문서를 다른 XML 문서로 변환하는데 사용하는 XML 기반의 언어 - 원본 문서는 변경되지 않으며, 원본 문서를 기반으로 새로운 문서를 생성 2) XSL-FO - XSL-FO는 종이, 화면 등 다양한 매체에 출력 하기 위한 XML 기반의 마크업 언어 - 사용자는 XSL-FO를 통해 어떻게 정보가 PDF에 출력되는지 확인 가능 3) XSL-FO Formatter - XSL-FO 문서를 최종 결과물인 PDF(다른 매체도 가능)문서로 변환할 수 있는 Formatter 간략하게 애기하면,  XSL-FO를 Formatter로 변환하게 되면 PDF가 생성되며,  XSL-FO는 사용자가 직접 작성할 수도 있고 XML source와 XSLT stylesheet를 이용하여 동적으로 생성 가능하다. 3. 간단한 예제로 정리 1) 필요한 데이터를 XML에 기술한다. XML file  <?xml version="1.0" encoding="UTF-8"?> <root>   <name>홍길동</name> </root>  ...