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

时间:2018-01-06 04:43:36

标签: java spring rabbitmq cqrs axon

我是axon的新手并从Axon 2.4.3迁移到3.1.1但是我找不到任何可用于其他版本的迁移指南? 您能否分享一下如何做到这一点的经验。 我面临很多问题,一些类已被删除,一些包已被更改。 对于某些课程,我甚至无法找到替代品,所以请帮我一些建议。 如果有相同的指南,请提供给我链接。

先谢谢

实际上我无法找到轴突2.4.3中存在的替代品 ClusteringEventBus- DefaultClusterSelector- EventBusTerminal- SimpleCluster- SpringAMQPTerminal- SpringAMQPConsumerConfiguration- ListenerContainerLifecycleManager -

1 个答案:

答案 0 :(得分:2)

目前还没有官方的Axon 2.x到3.x迁移指南,尽管它是在积压的介绍中。 但是,我可以在迁移时为您提供一些指示:

    您的聚合不再需要
  1. AbstractAnnotatedAggregateRoot,因此请将其删除。
  2. 现在,您可以使用静态AggregateLifecycle.apply()功能在聚合中发布事件,然后将其导入。
  3. 您的Sagas不再需要
  4. AbstractAnnotatedSaga,所以请将其删除。
  5. 如果在Spring应用程序中,建议在聚合上使用@Aggregate注释来通知Spring为聚合创建所有必需的bean(repository,factory ,,,)。
  6. 如果在Spring应用程序中,建议在sagas上使用@Saga注释来通知Spring为Saga创建所有必需的bean(repository,manager ,,,)。
  7. domain_event_entry表中添加了globalIndex列,如果您已经有相当多的事件需要正确的迁移。 This帖子提供了一些有关Axon Framework用户如何解决此问题的见解。
  8. 在Axon 2.x中你有群集的概念,你是否可以将你的事件处理组件分组。这已被事件处理组取代,你可以在{{1}之间进行选择(将事件推送到事件处理组件)和SubscribingEventProcessor(拉出事件并在事件处理组件中处理它们。)
  9. 在Spring / Axon 2.x组合中,您可能通过Spring XML使用了配置。在3.x中,您可以使用(1)TrackingEventProcessor API,(2)在Spring Configuration类上使用Configurer注释或(3 - 推荐)使用@EnableAxon依赖项自动得到你所有的Axon豆。
  10. 这是我能想到的最重要的事情,但我可能会忘记一些指示。您还可以找到有关迁移in this Axon User Group post的一些信息,或者更常见的是Axon User Group可能包含您正在寻找的一些内容。

    顺便说一下,随时更新您的问题,然后我可以更新我的答案,填写您仍然缺少的空白!

    <强>更新

    这一位是关于从2.4.3更新到3.1.1时缺少的特定类:

    就像我在之前的回复中分享的那样,确切地说,第7点确切地说,Axon 2.x中的完整Cluster方法已被Axon 3.x中的事件处理器方法所取代。 从概念上讲,这里没有太大的变化,但在内部,它的表现却不同,而且更加简洁。简而言之,所有这些类都被事件处理器取代,文档为here

    由于这根本没有帮助,我会给你一个特定的答案,让你找不到帮助你的课程。它已经很长了,所以要做好准备:

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

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

    的答案