1. 除非设置了群集,否则Axon服务器EE不可用于事件存储或消息路由。
  2. 默认情况下,未启用访问控制和SSL。
  3. 基本设置包括创建一个Axon服务器EE集群—这包括配置一个管理节点并向集群注册其他节点。
  4. 默认端口为8024/8124和8224。这些值可以通过配置进行更改。
  5. 名称和主机名默认为运行Axon服务器EE的系统主机名。这些值可以通过配置更改(“axoniq.axonserver.name” / “axoniq.axonserver.hostname”).
  6. “internalHostName”和“grpcInternalPort”用于Axon服务器EE集群节点之间的内部通信。这些值可以通过配置进行更改。

从4.3版开始,您可以使用配置设置axoniq.axonserver.autocluster.first”(在axonserver.properties文件)为其提供已知管理节点的主机名。如果该名称恰好是启动节点的主机名,它将在需要时自动在自身上执行“init cluster”命令。如果该名称不是当前主机名,它将调度一个任务来执行“register node”命令,该命令将一直尝试,直到成功为止,即第一个节点本身可用并初始化。此外,如果需要,您可以使用“axoniq.axonserver.autocluster.contexts“设置以提供要创建或联接的上下文的逗号分隔列表。(如果希望所有节点都成为管理节点,则需要显式添加“\u admin”上下文。)

在一个名为“EE”的目录下创建一个名为“EE”的目录下的数据。这是存储上下文的事件和快照的位置。位置可以使用axoniq.axonserver.event.存储“和”axoniq.axonserver.snapshot.storage“设置。请注意,位置自定义适用于所有上下文,您不能针对特定上下文进行自定义。

Axon服务器EE还将在名为“log”的目录下为每个上下文创建一个文件夹。这是存储每个上下文的复制日志的位置。复制日志在上下文数据传入和分发时存储它。复制日志的存储位置可以使用axoniq.axonserver.replication.log storage folder“属性。同样,这适用于所有上下文。

在“data”目录中还有一个小数据库,称为“ControlDB”,用于管理数据。您可以使用axoniq.axonserver.controldb-“路径”设置。

设置所需的一些详细信息,包括设置aexon所需的服务器选项。

由于Axon服务器是一个事件存储,可能包含敏感数据,因此在生产环境和类似生产环境中启用访问控制始终是一个很好的实践。

访问控制部分详细说明了在Axon服务器EE中设置访问控制所需的步骤。

Axon Server EE支持TLS/SSL(传输层安全/安全套接字层)来加密Axon Server SE的所有网络流量—从Axon Framework客户端应用程序到Axon Server EE,以及Axon Server EE群集的各个节点之间。

SSL部分详细介绍了在Axon服务器EE中设置SSL所需的步骤。

13.1.3 Docker/k8s安装Axon server SE

13.1.3.1 docker图像

Axon提供了一个随时可用的图像。该图像是使用gcr.io存储库中Google的“ distroless”基础图像(在本例中为“ gcr.io/distroless/java:11”)的紧凑图像构建的。

要运行提供的图像,可以执行以下命令。这将在Docker容器中启动Axon Server SE,并向主机公开HTTP(8024)和GRPC(8124)端口。

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

通过查询可用于检索正在运行的Axon Server实例的配置信息的REST API,可以对正在运行的docker容器进行快速验证。

$ curl -s http://localhost:8024 / v1 / public / me

这将显示以下信息:

  "authentication": false,
  "clustered": false,
  "ssl": false,
  "adminNode": true,
  "developmentMode": false,
  "storageContextNames": [
    "default"
  "contextNames": [
    "default"
  "httpPort": 8024,
  "grpcPort": 8124,
  "internalHostName": null,
  "grpcInternalPort": 0,
  "name": "{axon-server-name}",
  "hostName": "{axon-server-hostname}"

该应用程序安装在具有最小属性文件的根目录中,如下所示。“ / data”和“ / eventdata”目录创建为卷,它们的数据将在Docker临时存储树中某个位置的本地文件系统上访问。

axoniq.axonserver.snapshot.storage = / eventdata
axoniq.axonserver.controldb-path = /data
axoniq.axonserver.pid-file-location= /data
logging.file = / data / axonserver.log
logging.file.max-history = 10
logging.file.max-size = 10MB客制化

13.1.3.1.1 偏好设置

可以根据您的要求指定卷的目录位置。该映像还具有未标记为卷的第三个目录“ / config”。这使您能够拥有一个“ axonserver.properties”文件,可以将其放置在该位置以覆盖上述设置以及添加类似于本地安装的新属性。

假设您有一个目录“ axonserverse ” ,它将是您的卷和配置信息的指定位置。

我们将首先为卷/配置创建子目录。我们还将在axonserver.properties文件中添加几个自定义属性(名称/主机名),该文件将放置在config子目录中。如上所述,您可以添加其他属性来控制配置。

$ mkdir -p axonserverse/data axonserverse/events axonserverse/config
> echo axoniq.axonserver.name=axonserver
> echo axoniq.axonserver.hostname=localhost
> ) > axonserverse/config/axonserver.proprties

要使用上面完成的自定义启动容器,可以执行以下命令:

docker run -d --rm --name axonserver -p 8024:8024 -p 8124:8124 -v `pwd`/axonserverse/data:/data -v `pwd`/axonserverse/events:/eventdata -v `pwd`/axonserverse/config:/config axoniq/axonserver

现在,如果您查询API(使用上面描述的“ curl”命令),它将显示它以名称“ axonserver”和主机名“ localhost”运行。数据目录还将包含ControlDB文件,PID文件以及日志输出的副本。“事件”目录将包含事件和快照数据。

通过自定义的实现,这完成了Axon Server SE Docker映像的基本设置。

13.1.3.2 Docker撰写

在docker-compose中运行Axon Server SE有助于解决围绕分布式方案的更复杂需求。以下文件将通过将“ ./data”、“./events”和“ ./config”安装为卷来启动Axon Server SE,并且config目录实际上是只读的。

再次假设您有一个目录“ axonserverse ” ,它将是您的卷和配置信息的指定位置。

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