首页 > 解决方案 > 玩 Akka Actors 网络和非网络应用程序一起工作

问题描述

我创建了一个应用程序,该应用程序具有一起工作的 Web 服务器和 ssh 服务器。目前 SSH 服务器是在 Play 中运行的 Singleton。所以它是一个在后台运行 SSH 服务器的播放应用程序。

我希望 ssh 服务器不 100% 依赖于 Web 部件。它们可以在单独的服务器上运行以使其更容易扩展,这也很好。

由于我使用的是 Play(基于 Akka 构建),我认为 Actors 是一个不错的解决方案。但是这应该如何实施呢?

Web 和非 Web 部件都需要一些相同的类,例如:它们都需要具有User可以在 2 个应用程序之间发送的类。这些必须通过演员发送。但是 web 和非 web 部件是不同的东西。

是否可以将 2 个项目构建为具有不同入口点的 1 个项目?这样我仍然可以使用相同的类,并且在通过actor发送时它们会正确序列化,因为它们完全相同。还是有不同/更好的方法?

我在 Play 文档https://www.playframework.com/documentation/2.6.x/SBTSubProjects中找到了此页面。但它是“先玩”,我希望这两个应用程序都能够单独运行。

标签: scalaplayframeworkakkascalabilityactor

解决方案


您可以查看多项目构建的sbt 文档

在您的build.sbt文件中,您可以创建以下部分:

lazy val shared = (project in file("shared"))

lazy val ssh = (project in file("ssh"))
  .dependsOn(shared)

lazy val http = (project in file("http"))
  .enablePlugins(PlayScala)
  .dependsOn(shared)

这样,您将拥有共享代码和分离的部分。您还可以添加另一个项目,将 ssh 和 http 部分聚合到一个项目中。

对于两部分之间的通信,您可以将 akka 与远程参与者一起使用


推荐阅读