Scala Play HTTP和gRPC

代理

我有一个Scala Play的HTTP后端。工作良好。现在,我想在其之上设置一个gRPC-API(理论上这应该起作用)。

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

我可以运行sbt compile并在target /../ dic中获取生成的Scala类但是如果我尝试运行sbt run我会得到

--- (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
cbley

查看您的直接依赖项:

"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"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

升级Scala,Play和SBT的问题

Scala PLAY Guice注入和隐式

Firebase和Play框架(Scala)是否可行?

Scala.JS 中的会话(和 Play)

使用Scala和play Framework嵌套请求

如何在Play Framework(Scala)中发送HTTP 2.0请求

结合Scala-Play和AngularJS的最佳架构是什么?

结合使用Google Drive APis和Scala Play项目

如何在Play中组织Java和Scala代码?

Scala Play框架反向路由和控制器

如何在Play Scala中正确验证和转换JSON?

Akka Streams和Scala Play服务器

使用Scala和Play异步评估Future布尔值

使用Scala和Play Framework无法登录才能正常工作

无法使用Play for Scala和Anorm从表单插入值

使用Scala和Play框架与正文发送POST请求

Scala Play Json阅读

如何在Play 2.3和Scala 2.11中使用play-plugins-mailer?

如何将具有从 HTTP 请求收到的天数的 Json 解析为 Scala 和 Play 框架中的列表

在Scala中实现Play的Hibernate

Scala + Play + Intellij IDEA问题

Scala Play更新XML请求

scala play框架json转换

Scala / Play:如何将异步数据库调用的JSON结果写入http Ok

Scala Play文件上传:无法将views.html.uploadFile.type的实例写入HTTP响应

Scala Play 2.5 Form bindFromRequest:在这里找不到任何HTTP请求?

Scala和Play框架公开了REST服务。现在进行渲染(但需要使用Scala之外的其他东西)

Play框架(Scala)中使用ForkJoinTask []和ForkJoinPool $ WorkQueue导致内存泄漏

哪些最佳数据访问选项可用于带有Scala和PostgreSQL的Play框架?