这是正在进行的解释Axon框架的系列博客的第二部分。这篇博客将带你领先一步,帮助你了解更多关于需要遵循的应用程序目录结构。同时,我们将了解Axon的spring boot集成。此外,本博客将有一个快速的Axon服务器设置指南。
先决条件
- 通过Axon第一部分--Axon框架介绍(强烈建议)。
- 微服务
- 命令查询责任隔离(CQRS)
- 命令、事件和查询
- 领域驱动的设计
- 事件源
- SAGA设计模式
在Axon第一部分--Axon框架介绍中,我们已经看到了如何快速建立一个Axon应用程序。因此,在这篇博客中,我们将进一步了解Axon应用程序的包/目录结构、Axon服务器的快速设置以及Axon与SpringBoot的集成。
Axon应用程序的结构
首先,让我们深入了解pom.xml-中需要的所有依赖项:
<dependency>
<groupId>org.axonframework</groupId>
<artifactId>axon-spring-boot-starter</artifactId>
<version>${axon.version}</version>
</dependency>
<dependency>
<groupId>org.axonframework</groupId>
<artifactId>axon-test</artifactId>
<version>${axon.version}</version>
<scope>test</scope>
</dependency>
以上是pom.xml文件中对Axon的主要依赖。
目录结构
为了设置Axon应用程序,需要遵循一定的目录结构
因此,由于我们正在做CQRS,我们将隔离命令并创建一个幻灯片,所以我们将有一个专门的命令包。
我们也会有一个专门的查询包。
此外,当我们在做CQRS时,与这两个组件进行通信的最简单的方法是通过专用的消息、命令、查询和事件。因为它们是进出你的应用程序的唯一东西,所以有应用程序的coreapi。我们还将在一个不同的包中专用,因为这是我们想与大家分享的包,因为它是API。
Spring Boot集成
Axon框架也提供对Spring的支持。Spring可以通过编程方式进行配置。因此,在类的路径上不需要Spring。Spring注解在减轻Spring配置工作中起着重要作用。Axon提供了spring boot启动器。因此,在自动配置方面没有任何麻烦。
自动配置
Axon的Spring Boot自动配置是迄今为止最酷的选择,可以在配置Axon装备的过程中获得。仅仅通过说明依赖关系到 **axon-spring-boot-starter**.Axon将自动配置基础设施齿轮(命令总线、事件总线、查询总线),以及运行和储备聚合体和传奇所需的任何模块。
axon-spring-boot-starter 在安排启动器时跟踪通用的Spring boot协议。这取决于axon-spring-boot-autoconfigure ,它拥有Axon自动配置的具体实现。一旦Axon Spring Boot应用程序启动,它将在classpath 中寻找一个名为spring.factories 的文件。该文件位于axon-spring-boot-autoconfigure 模块的META-INF 目录中。
快速Axon服务器设置指南
什么是Axon服务器?
Axon服务器是AxonIQ的产品。这有两类,一类是Axon Server标准版,另一类是Axon Serve企业版。标准版是在AxonIQ开源许可下提供的。而企业版是具有所有特性和功能的商业版。
安装
有两种安装方式:
- 本地安装
- 使用docker来安装
如何在本地安装?
前提条件:
机器必须有 java 8或11。
下载Axon Server SE/EE的步骤
第1步
下载Axon服务器的二进制文件,可在链接中找到。
第2步
复制下面的命令到一个目录
axonserver.jar/axonserver-cli.jar
第3步
运行Axon Server SE,进入提取文件的目录。运行下面的命令:
$ ./axonserver.jar
_ ____
/ \ __ _____ _ __ / ___| ___ _ ____ _____ _ __
/ _ \ \ \/ / _ \| '_ \\___ \ / _ \ '__\ \ / / _ \ '__|
/ ___ \ > < (_) | | | |___) | __/ | \ V / __/ |
/_/ \_\/_/\_\___/|_| |_|____/ \___|_| \_/ \___|_|
Standard Edition Powered by AxonIQ
NOTE: This will start Axon Server SE using the default ports - 8024 for HTTP / 8124 for gRPC.
此外,Axon服务器也可以在开发模式下打开,只需使用下面的命令:
axoniq.axonserver.devmode.enabled=true
如何将Axon服务器作为Docker图像运行?
Axon服务器为我们提供了作为Docker镜像使用的功能,因此我们不需要在本地下载它。
作为Docker镜像运行Axon Server SE的步骤
所以,Axon服务器带有一个可使用的docker镜像。要将Axon服务器作为docker镜像运行,应执行以下命令:
$ docker run -d --name -p 8024:8024 -p 8124:8124 axoniq/axonserver
另一种运行Axon服务器的方法是通过Docker Compose
下面是Axon Server SE的docker compose文件。
version: '3.3'
services:
axonserver:
image: axoniq/axonserver
hostname: axonserver
volumes:
- axonserver-data:/data
- axonserver-events:/eventdata
- axonserver-config:/config:ro
ports:
- '8024:8024'
- '8124:8124'
- '8224:8224'
networks:
- axon-demo
volumes:
axonserver-data:
driver: local
driver_opts:
o: bind
type: none
device: ${PWD}/axonserverse/data
axonserver-events:
driver: local
driver_opts:
o: bind
type: none
device: ${PWD}/axonserverse/events
axonserver-config:
driver: local
driver_opts:
o: bind
type: none
device: ${PWD}/axonserverse/config
networks:
axon-demo:
在完成了Docker Compose文件后,只需运行下面的命令:
$ docker-compose up
Creating network "docker-compose_axon-demo" with the default driver
Creating volume "docker-compose_axonserver-data" with local driver
Creating volume "docker-compose_axonserver-events" with local driver
Creating volume "docker-compose_axonserver-config" with local driver
Creating docker-compose_axonserver_1 ... done
Attaching to docker-compose_axonserver_1
axonserver_1 | _ ____
axonserver_1 | / \ __ _____ _ __ / ___| ___ _ ____ _____ _ __
axonserver_1 | / _ \ \ \/ / _ \| '_ \\___ \ / _ \ '__\ \ / / _ \ '__|
axonserver_1 | / ___ \ > < (_) | | | |___) | __/ | \ V / __/ |
axonserver_1 | /_/ \_\/_/\_\___/|_| |_|____/ \___|_| \_/ \___|_|
axonserver_1 | Standard Edition Powered by AxonIQ