我想我有好消息要告诉你。
您可以在没有 Axon Server Enterprise 的情况下完美地使用 Axon Framework。
首先,您可以使用Axon Server标准版,它是完全免费的,如果您愿意,您也可以查看代码。
如果您希望将基础设施重新掌握在自己手中,您还可以选择不同的方法来分配CommandBus
和EventBus
/EventStore
.
For the CommandBus
该框架提供了DistributedCommandBus
有两个实施方案,分别是:
- JGroups https://github.com/AxonFramework/extension-jgroups
- 春云 https://github.com/AxonFramework/extension-springcloud
我认为选项 2 是分发命令的最理想选择,因为它使您可以自由选择所需的 Spring Cloud Discovery 服务实现。这应该可以让您在该领域“无需许可证”地工作。
为了分发事件,您可以大致考虑两种方法:
- 共享数据库,也就是您的
EventStore
,在所有实例中
- 使用事件消息总线来分发事件消息
如果您希望节点实例能够对命令模型进行事件源,您倾向于使用选项 1。这是必需的,因为 Axon Framework 需要专用的EventStore
能够从历史中获取命令模型。
当您只想将其他应用程序连接到您的 Event Stream 时,选项 2 比较合适。同样,该框架在这方面有两个选项:
- AMQP https://github.com/AxonFramework/extension-amqp
- Kafka https://github.com/AxonFramework/extension-kafka
在这一部分中,我唯一想指出的是 Kafka 扩展仍处于候选发布状态。但目前正在积极开展工作。
所有这些扩展及其选项都应在参考指南 https://docs.axoniq.io/reference-guide/,所以如果您要启动应用程序,我肯定会查看此文档。
但有一个东西你不能分发,那就是QueryBus
。
有一个杰出的issue https://github.com/AxonFramework/AxonFramework/issues/613为了解决这个问题,有人努力提供一个PR https://github.com/AxonFramework/AxonFramework/pull/1153。
在看到 Axon Server 标准版是如何做到这一点后,他故意关闭了 PR(如下comment https://github.com/AxonFramework/AxonFramework/pull/1153#issuecomment-517174130)因为在他看来,现阶段维护这样一个工具是不可行的。
那么,您可以在没有 Axon Server Enterprise 的情况下使用 Axon Framework 吗?
嗯,我想你可以。 :-)
但请注意,虽然如果您不使用 Axon Server Enterprise,您将因无需支付许可费而获胜,但这并不意味着您的产品将是免费的。
您将引入相当多的基础设施设置和生产时间来实现这一目标。
希望这能给您带来足够的反馈@ahoffer!