播放Akka Actors网络和非网络应用程序一起工作

时间:2018-05-15 19:49:13

标签: scala playframework akka scalability actor

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

我希望ssh服务器不会100%依赖Web部件。它们也可以在不同的服务器上运行,以便更容易扩展。

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

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

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

我在Play文档https://www.playframework.com/documentation/2.6.x/SBTSubProjects中找到了此页面。但它是"首先播放",我希望这两个应用程序都可以单独运行。

1 个答案:

答案 0 :(得分:2)

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

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与远程演员一起使用