【问题标题】:Is it possible to build my Axon project like this?是否可以像这样构建我的 Axon 项目?
【发布时间】:2021-08-24 09:45:42
【问题描述】:

仅供参考,我只是 Axon 的初学者。

我正在努力让我的项目看起来像上图,但我不知道是否可行。

因为我将命令从应用程序 A 发送到应用程序 C,并从应用程序 C 处理了多个任务(例如保存实体、处理事件、命令等),并且各种信息存储在 C 的 h2 DB 的SAGA_ENTRY 表中。但我认为这些信息应该与其他应用程序共享。但我认为不可能分享。这就是为什么我认为我设计错了。

我想知道我是否可以继续这样做。这是一个糟糕的设计和浪费时间吗?

【问题讨论】:

    标签: architecture axon


    【解决方案1】:

    设计本身没有问题,只看图片。它显示了 3 个(不同的)应用程序通过 Axon Server 相互通信,将其用作消息总线和事件存储。

    但是关于如何设计 Saga 的问题,这真的取决于。 在 Axon 框架中,Saga 可以被视为一个进程管理器,因此将存储信息(在它自己的 Saga 表上)的应用程序是进程管理器,并且是唯一负责处理它的人。它应该从任何地方获取命令(其他应用程序可以向它发送命令)并且应该以最佳方式处理它。

    基本上,如果您在应用程序 A 上有一个 Saga,它将触发由应用程序 B 或 C 处理的命令,那当然 - 没问题。这个 Saga 可以侦听来自应用程序 B 或 C 的命令,以决定是否应该触发额外的命令或完成 Saga。

    希望能澄清一点。 韩国,

    【讨论】:

    • 感谢您的回答。我目前正在使用基于编排的 Saga,如果 Saga 由 Application A 管理,那么仅在 Application A 中使用 Saga Table 可以吗?因为我不希望应用程序 B 或 C 有 Saga Table
    • 是的,当然是。 Saga 表用于存储(正在进行的)Sagas,因此将其仅放在您要使用它的地方是完全有意义的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2020-05-07
    相关资源
    最近更新 更多