【问题标题】:How to create a lagom server with grpc service implementation only?如何仅使用 grpc 服务实现创建 lagom 服务器?
【发布时间】:2021-09-26 10:18:12
【问题描述】:

我正在尝试按照documentation 使用 Lagom 框架创建一个 grpc 服务。这里hello服务除了grpc服务外还暴露了rest API。

现在在 ApplicationLoader 中创建 lagom 服务器时,我们将 grpc 服务 impl 分配为 additionalRouter,如下所示:

abstract class HelloApplication(context: LagomApplicationContext)
  extends LagomApplication(context)
    with AhcWSComponents {

  // Bind the service that this server provides
  override lazy val lagomServer =
    serverFor[HelloService](wire[HelloServiceImpl])
    .additionalRouter(wire[HelloGrpcServiceImpl])

}

出于演示的目的,一切都很好,但我们可能不需要总是创建除 gRPC 端点之外的 REST 端点。在这种情况下,我不需要HelloServiceHelloServiceImpl。问题是你将如何创建只有HelloGrpcServiceImpl 的 lagom 服务器?我找不到任何文档或 API 本身能够实现这一目标的方法!

请提出建议。

【问题讨论】:

标签: scala grpc lagom akka-grpc


【解决方案1】:

根据我作为对我的问题的评论提供的链接中的答案,解决方案如下所示:

trait PrimeGeneratorService extends Service {
  override def descriptor: Descriptor = named("prime-generator")
}

class PrimeGeneratorServiceImpl() extends PrimeGeneratorService

abstract class PrimeGeneratorApplication(context: LagomApplicationContext)
  extends LagomApplication(context) with AhcWSComponents {

  override lazy val lagomServer: LagomServer = {
    serverFor[PrimeGeneratorService](wire[PrimeGeneratorServiceImpl])
      .additionalRouter(wire[PrimeGeneratorGrpcServiceImpl])
  }

}

class PrimeGeneratorLoader extends LagomApplicationLoader {
  override def load(context: LagomApplicationContext): LagomApplication =
    new PrimeGeneratorApplication(context) {
      override def serviceLocator: ServiceLocator = NoServiceLocator
    }

  override def loadDevMode(context: LagomApplicationContext): LagomApplication =
    new PrimeGeneratorApplication(context) with LagomDevModeComponents

  override def describeService = Some(readDescriptor[PrimeGeneratorService])
}

这里我们必须创建虚拟服务特征和实现,分别为PrimeGeneratorServicePrimeGeneratorServiceImpl

不要忘记在加载器类中添加以下内容:

override def describeService = Some(readDescriptor[PrimeGeneratorService])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 2021-02-22
    • 2016-11-18
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2019-11-09
    • 2021-06-01
    相关资源
    最近更新 更多