Axon从2.4.3版本迁移到3.1.1有什么具体的方法吗

Is there any specific way for Axon migration from 2.4.3 version to 3.1.1

我是 axon 的新手,正在从 Axon 2.4.3 迁移到 3.1.1,但我找不到任何适用于其他版本的迁移指南? 你能分享一下你如何做同样的事情的经验吗? 我面临很多问题,一些 类 已被删除,一些包已被更改。 对于一些 类 我什至找不到替代品,所以请帮我一些建议。 如果有相同的指南,请提供 link 给我。

提前致谢

实际上我无法找到 axon 2.4.3 中的替代品 ClusteringEventBus- DefaultClusterSelector- 事件总线终端- SimpleCluster- SpringAMQP终端- SpringAMQPConsumerConfiguration- ListenerContainerLifecycleManager-

目前还没有官方的 Axon 2.x 到 3.x 迁移指南,尽管它正在积压中被引入。 但是,我可以给您一些在迁移时应该注意的指示:

  1. AbstractAnnotatedAggregateRoot 不再需要您的聚合,因此将其删除。
  2. 现在可以使用静态 AggregateLifecycle.apply() 函数在聚合中发布事件,因此请导入它。
  3. AbstractAnnotatedSaga 不再是您的 Sagas 所必需的,因此请将其删除。
  4. 如果在 Spring 应用程序中,建议在聚合上使用 @Aggregate 注释来通知 Spring 创建所有必需的 bean(存储库、工厂、、、 ) 对于聚合。
  5. 如果在Spring应用中,建议在你的sagas上使用@Saga注解来通知Spring创建所有需要的bean(repository, manager, ) 为传奇。
  6. domain_event_entry table 添加了一个 globalIndex 列,如果您已经有相当多的事件需要正确迁移。 This post 提供了一些 Axon Framework 用户如何解决此问题的见解。
  7. 在 Axon 2.x 中,您有集群的概念,您是否可以将事件处理组件分组到其中。这已被事件处理组取代,您可以在 [= =17=](将事件推送到事件处理组件)和一个 TrackingEventProcessor(将存储的事件拉出并在您的事件处理组件中处理它们)。
  8. 在 Spring / Axon 2.x 组合中,您可能已经通过 Spring XML 使用了配置。在 3.x 中,您可以使用 (1) Configurer API,(2) 在 Spring 配置 class 上使用 @EnableAxon 注释或 ( 3 - 推荐)使用 axon-spring-boot-starter 依赖项自动获取所有 Axon bean。

这是我能想到的,但我可能忘记了一些建议。您还可以找到一些关于迁移的信息 in this Axon User Group post, or more generally the Axon User Group 可能有一些您正在寻找的东西。

顺便说一下,请随时更新您的问题,然后我可以更新我的答案以填补您仍然遗漏的空白!

更新

此位与您从 2.4.3 更新到 3.1.1 时缺少的特定 classes 有关:

就像我在之前的回复中分享的那样,确切地说是第 7 点,Axon 2.x 中的完整集群方法已被 Axon 3.x 中的事件处理器方法所取代。 从概念上讲,这里没有太大变化,但在内部它的行为有所不同并且有意更简洁。所以简短的回答是,所有这些 classes 都已被事件处理器替换,其文档为 here

因为这根本不是很有帮助,我会给你一个具体的答案来解决你所缺少的 classes 以帮助你解决问题。很长,所以要做好准备:

  • ClusteringEventBus:这是为了将事件发布到事件处理组件集群。在 Axon 3.x 中,它现在位于处理组之后,由订阅或跟踪实现处理。因此,不要搜索 ClusteringEventBus 以将事件发布到组。所有 3.x EventBus 实现都知道如何将事件发布到 SubscribingEventProcessor,而 TrackingEventProcessor 将从商店本身提取事件(因此不涉及总线)。
  • DefaultClusterSelector:集群选择器负责将事件处理组件/事件监听器分组到一个集群中。作为共享,我们不再把一组Event Listeners看成一个集群,而是看成一个Processing Group。 3.x 中的行为是您的事件侦听器实现的包名称是所使用的处理组的名称。但是,您可以覆盖它,但将 @ProcessingGroup({processing-group-name}) 作为 class 级别注释添加到您的事件侦听器实现中。 Axon 3.x 配置会自动将具有相同处理组名称的事件侦听器分组在同一事件处理器下(在 2.4.x 中将转换为同一集群)。默认情况下,使用的事件处理器实现将是订阅。这个可以在配置里调成Tracking。
  • SimpleCluster:根据我之前的解释,不再有SimpleCluster。这已被 EventProcessor 接口取代,该接口由订阅和跟踪事件处理器实现。
  • EventBusTerminalEventBusTerminal 负责将事件发布到正确的集群,无论是本地集群还是远程集群。作为共享,我们不再有集群,而是事件处理器组。事件如何到达事件处理器取决于所使用的实现。如果使用订阅(阅读:默认事件处理器),EventBus 负责向它们发布事件。但是,TrackingEventProcessor 将异步启动它自己的线程以从 EventStore 中提取事件,并将这些事件发送到其事件侦听器。因此,您不再需要搜索 EventBusTerminal,因为它已过时。
  • SpringAMQPTerminal:正如我在上面分享的那样,EventBusTerminal 已被删除以支持订阅或跟踪方法。从 Axon 3.1.1 开始,对于 Spring AMQP,我们有一个订阅事件处理器实现来监听事件并将它们发布到队列中,即 SpringAMQPPublisher.
  • SpringAMQPConsumerConfiguration:此配置 class 已就位,因为在引入 axon-amqp 时,Spring 并未像在Axon 的引入点 3.x。因此,我们决定不为这些消费者保留我们自己的配置,而是将其留给 Spring 的主管人员。因此,您不会找到 SpringAMQPConsumerConfiguration,应该搜索 Spring 如何为 AMQP 创建消费者。
  • ListenerContainerLifecycleManager:class 是正确接收来自队列的所有事件并将它们发送到所有事件侦听器的实现。此 class 已被 SpringAMQPMessageSource 取代。

希望这能为您提供您正在寻找的答案@AS!