Scala 播放 HTTP 和 gRPC

Scala Play HTTP and gRPC

我有一个带有 Scala Play 的 HTTP 后端。工作正常。 现在我想在它上面设置一个 gRPC-API(理论上这应该有效)。

为了设置 gRPC,我基本上遵循了 akka-quickstart

我可以 运行 sbt 编译 并在 target/../[=29= 中获取我生成的 Scala 类 ] 哒哒。 但是如果我尝试 运行 sbt 运行 我得到

--- (Running the application, auto-reloading is enabled) ---

[warn] a.u.ManifestInfo - You are using version 2.6.5 of Akka, but it appears you (perhaps indirectly) also depend on older versions of related artifacts. You can solve this by adding an explicit dependency on version 2.6.5 of the [akka-discovery] artifacts to your project. See also: https://doc.akka.io/docs/akka/current/common/binary-compatibility-rules.html#mixed-versioning-is-not-allowed
[error] java.lang.IllegalStateException: You are using version 2.6.5 of Akka, but it appears you (perhaps indirectly) also depend on older versions of related artifacts. You can solve this by adding an explicit dependency on version 2.6.5 of the [akka-discovery] artifacts to your project. See also: https://doc.akka.io/docs/akka/current/common/binary-compatibility-rules.html#mixed-versioning-is-not-allowed

所以我知道我使用的一些库对于 Akka 2.6.5 来说太旧了,但我不明白如何在较低的 Akka 版本上设置我的服务。

我的plugins.sbt

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.2")
addSbtPlugin("org.foundweekends.giter8" % "sbt-giter8-scaffold" % "0.11.0")
addSbtPlugin("com.lightbend.akka.grpc" % "sbt-akka-grpc" % "1.0.0-M1")
resolvers += Resolver.bintrayRepo("playframework", "maven")
libraryDependencies += "com.lightbend.play" %% "play-grpc-generators" % "0.8.2"

我的build.sbt


name := "smartmarkt"
version := "1.0-SNAPSHOT"
scalaVersion := "2.13.2"

lazy val root = (project in file("."))
  .enablePlugins(PlayScala, PlayAkkaHttp2Support, AkkaGrpcPlugin)

import play.grpc.gen.scaladsl.PlayScalaServerCodeGenerator
akkaGrpcExtraGenerators += PlayScalaServerCodeGenerator
libraryDependencies += "com.lightbend.play" %% "play-grpc-runtime" % "0.8.2"

libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0" % Test

查看您的直接依赖关系:

"com.lightbend.play" %% "play-grpc-runtime" % "0.8.2" 取决于 akka-discovery 2.6.4.

您正在使用 Play 2.8.2,它依赖于 Akka 版本 2.6.5。

只需将 akka-discovery 2.6.5 的依赖项添加到您的依赖项中即可:

libraryDependencies += "com.typesafe.akka" %% "akka-discovery" % "2.6.5"