我们正在构建一个基于 Akka 集群的多组件系统。每个组件都是一个单独的 Play!项目并在启动时加入 Akka 集群,组件开始查找参与者工作。
问题
我对这个设置有两个问题:
编写测试代码非常困难(我们还没有弄清楚这一点),特别是在编写依赖于来自不同组件的多个参与者的测试时。我们如何解决依赖关系并在测试代码中创建适当的集群(在两个播放应用程序之间!)
在开发过程中,每个开发人员都必须启动多个 Sbt 实例来启动系统(不同的游戏项目),这会占用整个系统内存,开发变得异常缓慢。
我在寻找什么
我正在考虑使用集群“角色”属性进行选择性启动,这意味着只有一个 Play 项目,组件是(模块),并且在启动 Play 项目时我将扫描当前的“角色”此实例的属性并基于此我启动或停止某些组件/参与者。
这将使测试更容易,但我不知道如何在 Play 中执行此操作,特别是某些组件实际上提供 RESTful API(Play 控制器)并且我不知道如何在启动时启用/禁用路由和控制器玩。
是否有任何文件或内容显示构建模块化分布式系统的正确方法或任何线索?(也与如何设置 SBT 有关?
编辑 1:该项目位于单个存储库中,并且具有单个 sbt 构建(多个项目)