【问题标题】:gRPC Java server with setReuseAddress(true)?带有 setReuseAddress(true) 的 gRPC Java 服务器?
【发布时间】:2019-11-29 07:50:32
【问题描述】:

我正在开发一个用 Java 编写的 gRPC 服务器。它使用NettyServerBuilder 来启动/运行服务器。我想知道,如何为服务器设置setReuseAddress(true),以便它可以快速重启(在崩溃或维护重启时)。

这是当前的启动:

import io.grpc.Server;
import io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder;

//...

private Server server;

//...

server = NettyServerBuilder
                .forPort(port)
                .permitKeepAliveWithoutCalls(true)
                .permitKeepAliveTime(5, TimeUnit.SECONDS)
                .addService(this.queryService)
                .addService(this.commandService)
                .build();

【问题讨论】:

    标签: netty grpc-java so-reuseport


    【解决方案1】:

    这应该可以解决问题:

    Server server = NettyServerBuilder
                .forPort(port)
                // ...
                .withChildOption(ChannelOption.SO_REUSEADDR, true)
                .build();
    

    【讨论】:

    • 您可能还想使用withOption(...)
    • @NormanMaurer 您可能会将io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder 与其他一些类混淆,但这个类没有withOption(...) 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2021-10-21
    • 2023-03-27
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多