【问题标题】:Play Akka Actors web and non-web application working together玩 Akka Actors 网络和非网络应用程序一起工作
【发布时间】:2018-10-25 18:09:48
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: scala playframework akka scalability actor


    【解决方案1】:

    您可以查看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与远程actor一起使用

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多