有没有办法支持 scalapb grpc 并在 scala 中播放应用程序

is there a way to support a scalapb grpc and play app in scala

我有一个 grpc scala 应用程序需要进行 aws ELB 健康检查。通常我使用 Play /health 来做到这一点。

有没有办法 运行 grpc 和 Play 应用程序都监听不同的端口。

不幸的是,从现在开始(Play 2.5.x)你会遇到 gRPC 和 Play 在同一个进程中共存的问题,因为它们有冲突的 netty 版本。考虑将 akka-http 用于您的健康检查端点;它也更轻,对您的项目结构没有任何影响。

我设法让 Play 2.6.11 应用程序通过使用 shaded 版本的 grpc-netty 依赖项来使用 gRPC 客户端。此依赖项不会与 Play 的 netty 冲突。

更改您的依赖项:

"io.grpc" % "grpc-netty" % scalapb.compiler.Version.grpcJavaVersion

至:

"io.grpc" % "grpc-netty-shaded" % scalapb.compiler.Version.grpcJavaVersion

并执行 clean & compile.

我在 this thread. It was introduced into grpc-java version 1.9 in this pull request 中发现了 grpc-netty-shaded。