是否可以在没有 Axon Server Enterprise 的情况下扩展 Axon Framework

2024-02-24

是否可以在没有 Axon Server 的情况下扩展 Axon Framework企业?我有兴趣使用 Axon 创建原型 CQRS 应用程序,但最终的可部署系统必须免收许可费用。如果 Axon Framework 无法使用免费软件扩展到六个节点,那么我可能应该寻找其他地方。

如果 Axon 框架对于系统来说不是一个好的选择,您会推荐什么?围绕 Apache Pulsar 构建一些东西是一个明智的选择吗?


我想我有好消息要告诉你。 您可以在没有 Axon Server Enterprise 的情况下完美地使用 Axon Framework。

首先,您可以使用Axon Server标准版,它是完全免费的,如果您愿意,您也可以查看代码。 如果您希望将基础设施重新掌握在自己手中,您还可以选择不同的方法来分配CommandBusEventBus/EventStore.

For the CommandBus该框架提供了DistributedCommandBus有两个实施方案,分别是:

  1. JGroups https://github.com/AxonFramework/extension-jgroups
  2. 春云 https://github.com/AxonFramework/extension-springcloud

我认为选项 2 是分发命令的最理想选择,因为它使您可以自由选择所需的 Spring Cloud Discovery 服务实现。这应该可以让您在该领域“无需许可证”地工作。

为了分发事件,您可以大致考虑两种方法:

  1. 共享数据库,也就是您的EventStore,在所有实例中
  2. 使用事件消息总线来分发事件消息

如果您希望节点实例能够对命令模型进行事件源,您倾向于使用选项 1。这是必需的,因为 Axon Framework 需要专用的EventStore能够从历史中获取命令模型。

当您只想将其他应用程序连接到您的 Event Stream 时,选项 2 比较合适。同样,该框架在这方面有两个选项:

  1. AMQP https://github.com/AxonFramework/extension-amqp
  2. 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!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在没有 Axon Server Enterprise 的情况下扩展 Axon Framework 的相关文章

  • 没有使用 SimpleInjector APIv3 注册类型 ICommandHandler

    我一直在使用 SimpleInjector 并尝试正确注册所有命令处理程序 这是我的代码 CQRS cs public interface ICommand public interface ICommandDispatcher void
  • NEventStore 重播事件的问题

    我们正在使用 CQRS ES ES 是 NEventStore 以前称为 JOliver EventStore 我们在不同的命令中有 2 个聚合 第二个 AR 的投影取决于读取模型中第一个 AR 投影写入的数据 问题是 当我们运行软件时 一
  • CQRS - 是否允许从写入端调用读取端?

    我开始阅读有关 CQRS 的内容 但我有点困惑 是否允许在写入端调用读取端来获取附加信息 http cqrs nu Faq command handlers http cqrs nu Faq command handlers在这里他们说这是
  • CQRS(事件溯源):具有多个聚合的预测

    我有一个关于 CQRS 架构上涉及多个聚合的投影的问题 例如 假设我有两个聚合WorkItem and Developer并且以下事件按顺序发生 但不是立即发生 工作项已创建 工作项Id WorkItemTitleChanged workI
  • Axon框架:如何配置多个数据库?

    我使用 mysql 作为事件存储 因此 axon server connector 被排除在类路径之外 我的用例描述如下 Spring Boot 2 1 7 RELEASE 和 axon 4 3 2 我计划拥有三个数据库 分别用于轴突事件存
  • 订阅类别流,事件永远不会出现在订阅客户端中

    第一次使用获取事件存储 http geteventstore com阅读文档后 我遇到了一个问题 事件永远不会出现在我的订阅客户端上 由于我错过了一个配置步骤 这是可能的 拥有这个控制台应用程序客户端 public class EventS
  • DDD 和 CQRS:从单个命令处理程序使用多个存储库?

    简单电子商店的典型示例 假设用户将一些商品添加到购物篮并单击 结账 发出 创建订单 命令 现在 在实际创建状态为 预计付款 的订单记录以及数据库中相应的订单行之前 我们必须检查用户选择的商品是否仍然可用 也许某些商品在用户将其添加到购物篮时
  • Mediatr - 无效/更新缓存的正确位置在哪里

    这个问题源于我问过太多接口 QCRS 和 Mediatr 库 请求 响应 的另一个问题 Mediatr 减少 DI 对象的数量 https stackoverflow com questions 53966361 mediatr reduc
  • 命令中的 CQRS 代码重复

    我有一个关于 CQRS 原则的命令端代码重复的问题 一直在关注以下文章 https www cuttingedge it blogs steven pivot entry php id 91 https www cuttingedge it
  • DDD 中两个限界上下文之间的通信

    我有几个不同的有界上下文在域中 CRUD 操作的验证是在每个限界上下文中构建的 例如 我可以仅当创建者是组长时才创建名为 GAME 的实体 在这个例子中我有两个有界上下文 BC 其一是Game BC另一个是User BC 为了解决这个问题
  • IRequestHandler 返回 void

    请看下面的代码 public class CreatePersonHandler IRequestHandler
  • 是否可以在没有 Axon Server Enterprise 的情况下扩展 Axon Framework

    是否可以在没有 Axon Server 的情况下扩展 Axon Framework企业 我有兴趣使用 Axon 创建原型 CQRS 应用程序 但最终的可部署系统必须免收许可费用 如果 Axon Framework 无法使用免费软件扩展到六个
  • 在 DDD/CQRS 中,ReadModel 是否应该充当 ViewModel,如果不是,那么映射的责任在哪里?

    假设读取模型ProductCatalogueItem由聚合 写入模型构建 与写入模型分开存储 并包含每个可供销售的产品 并具有以下属性 basics product code name price number of available s
  • CQRS - 如何对场景执行系统进行建模

    我最近开始为我即将启动的一个绿地项目研究 CQRS 和 DDD 我研究了 Udi Dahan Greg Young Mark Nijhof 等人的大量资料 这些确实非常有帮助 我想我对这些概念有了很好的理解 但是 我仍然有一些关于如何将这些
  • 导入数据和事件溯源

    我目前正在开发一个整体系统 我希望将其引入现代并结合 DDD 和 CQRS 我收到了重新编写解决方案的导入机制的请求 并认为这可能是开始此重新架构过程的好机会 目前流程是 用户上传 CSV 系统解析 CSV 并在屏幕上显示每一行 对每一行以
  • 自动扩展 Axon 的跟踪事件处理器

    我使用 Axon 框架 4 0 3 和 Spring Boot 来进行事件溯源 并有一个跟踪处理器 该处理器配置为具有多个段 线程来同时处理事件 axon eventhandling processors my processor init
  • CQRS 对于我的域是否正确?

    我正在对一个档案进行建模 它是视频点播系统的一部分 将存档想象成 Windows 资源管理器 其中多个用户可以创建文件夹 上传视频 重组文件夹等 有业务规则 权限 确定是否允许用户执行任务 即重命名文件夹 移动文件夹 查看文件夹等 我已将每
  • 使用流程管理器(又名 saga)在同一有界上下文中跨聚合根实现最终一致性

    假设您的有界上下文中有两个聚合 它们之间存在一些约束 使用 DDD 这些内部聚合约束不能在同一事务中强制执行 即聚合边界是事务边界 您是否会考虑使用 Microsoft CQRS 旅程中所谓的 流程管理器 来协调同一有界上下文中的两个聚合
  • 使用 CQRS 处理中介管道中的错误/异常?

    我正在努力追随这个帖子 https lostechies com jimmybogard 2014 09 09 tackling cross cutting concerns with a mediator pipeline 由 Jimmy
  • 使用 membus 和 ioc 容器的 SetHandlerInterface() 的多种类型

    过去此处演示 CQRS 代码 https gist github com hyrmn 3200053 raw 39ae14e4226d5e0d032690bf0e37e75286d2a1f7 EndToEndTests cs命令和事件处理程

随机推荐

  • 在 Android 中获取麦克风音频。音频上下文

    由于某种原因我无法得到这个问题的答案 你好 我需要访问 Android 麦克风 我使用这个在网络上制作了一个调谐器应用程序 https github com cwilso PitchDetect https github com cwils
  • .kube/config 中没有访问令牌

    在 GKE 中升级集群后 仪表板将不再接受证书身份验证 我的同事说 没问题 kube config 中有一个可用的令牌 user auth provider config access token REDACTED cmd args con
  • 玩笑测试失败:TypeError:window.matchMedia 不是函数

    这是我第一次前端测试经历 在这个项目中 我使用 Jest 快照测试并收到错误TypeError window matchMedia is not a function在我的组件内 我浏览了 Jest 文档 找到了 手动模拟 部分 但我还不知
  • 如何使用纯 CSS 自动调整图像大小以实现响应式设计?

    我尝试使用 CSS 属性自动调整图像大小max width 但它在 IE7 和 IE8 中不起作用 有没有办法在 IE7 和 IE8 中使用纯 CSS 自动调整图像大小 Use width inherit 使其能够在 IE8 中使用纯 CS
  • 检查环境变量是否已设置[重复]

    这个问题在这里已经有答案了 我正在编写一个shell脚本 我必须检查是否设置了环境变量 如果没有设置则必须设置它 有什么方法可以检查 shell 脚本是否已经设置了环境变量 有条件地分配变量 无论是否在环境中 的标准解决方案是 VAR fo
  • 在以下情况下最终会发生什么情况?

    如果我有以下代码 try some code catch Exception e some code finally 在以下情况下 finally 块会发生什么情况 如果发生任何已检查的异常 如果 System exit 被调用 如果发生任
  • 从 C 读取串行数据 (OSX /dev/tty)

    我正在尝试使用 C 从蓝牙条形码扫描仪 KDC300 读取数据 这是我到目前为止的代码 并且该程序成功建立了与扫描仪的蓝牙连接 但是当扫描条形码时 上没有显示任何输入屏幕 最终将用数据完成更多工作 但我们必须首先让它工作 对吧 这是程序 i
  • 如何使用 POI 解析 Excel 文件中的 UTF-8 字符

    我一直在使用 POI 成功解析 XLS 和 XLSX 文件 但是 我无法从 Excel 电子表格中正确提取特殊字符 例如中文或日文等 UTF 8 编码字符 我已经弄清楚如何从 UTF 8 编码的 csv 或制表符分隔文件中提取数据 但对 E
  • Twitter Bootstrap 嵌套网格放置列

    这可以在 Twitter Bootstrap 中使用相同的标记通过操作行 列类来完成吗 我已经为不同的尺寸设置了单独的标记 理想情况下 我想要一个标记 并使其针对较小的屏幕适当折叠 大视野 Two One
  • 支持作业批处理的排队系统(例如,一名工人同时处理多个作业)

    我正在寻找一个可以支持以下场景的排队系统 客户端添加一个作业 检查某个特定 url URL1 有多少 Facebook 点赞 客户端添加了另一个作业 检查 URL2 的相同信息 一名工作人员从队列中选取 1 到 50 个工作 网址 例如 如
  • VS Code Code Runner 不适用于 virtualenvs

    我无法让 Code Runner 扩展与 virtualenvs 一起使用 每当我尝试运行导入仅安装在 virtualenv 中而不是全局 Python 安装中的库的代码时 我都会收到导入错误 在终端中运行完全相同的代码是可行的 我使用的是
  • 生成 BKS 密钥库并存储应用程序密钥

    我应该创建一个 BKS 密钥库并存储一个私有应用程序密钥 该密钥是一个 48 个字符长的字符串 我还有一个 JCEKS 密钥库 其中已包含此密钥值 如果我尝试使用 portecle 工具转换为 BKS 类型密钥库 则密钥条目会丢失 我是 J
  • 为什么我的程序集需要按特定顺序加载?

    我正在编写一个简单的插件并偶然发现contractType IsAssignableFrom pluginType https msdn microsoft com en us library system type isassignabl
  • 为 nltk 解析树生成语法规则

    如果我有这句话 Mary saw a dog 以及以下内容 pos tags NNP VBD DT NN 是否可以生成这句话的语法规则 以便可以生成解析树 下面的语法是使用的语法规则nltk parse cfg sent Mary saw
  • R 中的 strptime 错误:输入字符串太长

    我似乎无法将数据从 csv 转换为正确的日期类 我使用的是包含 1033 个日期的 csv 我已将 CSV 保存为 YYYYMMDD 格式 这是我导入 csv 的代码 似乎有效 bd lt read csv birthdaysExample
  • 用其内容替换组件 - 角度 2 [重复]

    这个问题在这里已经有答案了 我正在寻找一种方法来拥有仅以其内容呈现的组件 例如 给定组件 Component selector my cmp template div my cmp div class MyComponent 使用 angu
  • Google Analytics 缺少analytics.js 脚本

    我被困在复制谷歌分析跟踪代码问题上 看起来 Google Tag Assistant 没有考虑我从为网站生成的 GA 跟踪 JS 中复制的代码 该网站位于http www orchid co nz http www orchid co nz
  • 如何让用户保持登录状态?迅速

    我正在使用 firebase 进行登录 我需要知道如何保持登录状态直到注销 我听说过 UserDefaults 但我不确定如何使用它 这是我的登录视图控制器 import FirebaseAuth import FirebaseFirest
  • strip_tags 和 html_entity_decode 组合无法按预期工作

    从昨天起我一直在与这个问题作斗争 不幸的是没有任何效果 不完全是 我找到了某种解决方法 经过一些研究和重读文档后我仍然有点目瞪口呆和困惑 假设有一个丑陋的字符串 它已经有正确的 html 编码的特殊字符 像这样 exampleString
  • 是否可以在没有 Axon Server Enterprise 的情况下扩展 Axon Framework

    是否可以在没有 Axon Server 的情况下扩展 Axon Framework企业 我有兴趣使用 Axon 创建原型 CQRS 应用程序 但最终的可部署系统必须免收许可费用 如果 Axon Framework 无法使用免费软件扩展到六个