【问题标题】:Hosting multiple netty servers for grpc inside a tomcat server, application redeploy issue在 tomcat 服务器内为 grpc 托管多个 netty 服务器,应用程序重新部署问题
【发布时间】:2018-10-26 12:16:11
【问题描述】:

我正在开发一个微服务应用程序并将它们部署在单个 tomcat 服务器中。所以我没有使用弹簧靴。我只使用弹簧。

假设我们有应用程序调用master-datacommon-service 当我将它们部署到tomcat 中时,我可以通过端口8080 访问它们。 但我希望他们转移到 grpc 通信端点。然后我必须为每个模块安装 grpc 库和 netty。现在我可以在端口65657575 中访问他们的grpc 端点。

我使用了spring bean@PostConstruct注解,分别在不同的端口(6565 and 7575)运行grpc服务器。现在它工作正常。

但是当我向master-data 添加新更改并将其重新部署到tomcat 而不关闭tomcat时,它会给我java.net.BindException: Address already in use ,当我在终端中运行ps -ef | grep netty 时,我可以看到还有一些进程仍在调整中。

似乎 grpc 服务器没有正确关闭,因为 tomcat 没有关闭

谁能给我一个合适的解决方案?

【问题讨论】:

    标签: java spring tomcat netty grpc


    【解决方案1】:

    gRPC Java 服务器需要通过调用 shutdown() 方法来关闭。我对将 gRPC Java 与 Tomcat/Spring 集成没有太多(任何)知识,但是 gRPC 端没有内置集成,因此您需要确保 gRPC 服务器以某种方式接收到编程的shutdown() 信号。

    grpc-java-contrib repository 包含用于使用 gRPC Java(包括 Spring)的其他实用程序。特别是,听起来GrpcServerHost 可能有助于在 Spring 环境中管理服务器的生命周期。

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 2019-01-16
      • 2021-12-18
      • 2020-07-18
      • 1970-01-01
      • 2023-02-20
      • 2012-03-26
      • 2012-06-30
      相关资源
      最近更新 更多