akka Scala播放HTTP和gRPC

snvhrwxg  于 2022-11-06  发布在  Scala
关注(0)|答案(1)|浏览(141)

我有一个带有Scala Play的HTTP后端。运行良好。现在我想在它上面设置一个gRPC-API(理论上应该可以)。
为了设置gRPC,我基本上遵循了akka-quickstart
我可以运行 sbt compile 并在 target/../ dic中获取生成的Scala类。

--- (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版本上设置我的服务。
我的插件.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"

我的建筑.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
osh3o9ms

osh3o9ms1#

查看您的直接依赖项:
"com.lightbend.play" %% "play-grpc-runtime" % "0.8.2"依赖于akka发现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"

相关问题