我可以使用 axon 框架和 spring boot 开发多租户应用程序吗?

问题描述

我想通过在我当前的项目中使用 Axon FrameworkSpring BootMongoDB 来实现多租户应用程序。目前,该应用程序以单租户方式运行。该方法是为每个租户创建单独的 mongo 数据库。我们面临的问题是如何在特定租户数据库中存储和保存事件。找不到任何类方法来覆盖和添加租户 ID(数据库名称)以在数据库获取或保存事件。

我们正在使用 Axon Framework 4.1.1axon-mongodb 扩展。

能否请您告诉我这是否可以(如果可以)?任何高级代码都会有用吗?

解决方法

首先,如果您在 Axon 中使用 MongoDB 作为事件存储,我想发出警告。当前的实现,在 AxonIQ 的思维框架中,随着时间的推移,并没有提供您需要从事件存储中获得的必要好处。详细说明为什么会出现这种情况在这里会有点多,但是 this 视频很好地解释了它(在演示文稿中大约 25 分钟讨论了 Mongo)。

当谈到在 Axon 应用程序中实现多租户时,Milen 对您的消息的评论实际上就足够了。就此而言,MongoDb 或 RDBMS 或 Axon 服务器之间的过程没有什么真正不同。尽管如此,您仍需要配置您的商店,这与您需要支持多租户这一事实无关。

您需要自己构建的是一种在发布时选择正确商店的方法。正如您正确指出的那样,这将需要在您的事件级别上使用一些自定义工具。因此,这可能需要构建一个特定的 EventStore 实现,该实现从事件的元数据中获取租户 ID,并选择正确的存储来发布事件。绝对可行(正如我在其他方看到的那样),但未在 Axon 中开箱即用。

请注意,Axon Server 可以很好地简化此过程,但我知道这对您来说目前可能不是一个可行的解决方案。