配置

<- 返回索引

本节描述您如何配置您的 grpc-spring-boot-starter 客户端。

目录

附加主题

通过属性配置

grpc-spring-boot-starter 可以通过 Spring 的 @ConfigurationProperties 机制来进行 配置

您可以在这里找到所有内建配置属性:

如果你希望阅读源代码,你可以查阅 这里

Channels 的属性都是以 grpc.client.__name__.grpc.client.__name__.security. 为前缀。 Channel 的名称从 @GrpcClient 注解中获取。 如果您想要配置一些其他的选项,如为所有服务端设置可信证书,并可以使用 GLOBAL 作为名称。 单个 channel 的属性配置会覆盖全局配置。

选择目标

您可以使用以下属性指定目标服务器:

grpc.client.__name__.address=static://localhost:9090

目标服务器支持多种 schemes,您可以使用它们来指定目标服务器(优先级0(低) - 10(高)):

如果您没有定义地址,它将按照如下方式被猜测:

注意: 斜杠的数量很重要! 还要确保不要连接到普通的 web / REST / 非 grpc 服务器(端口)。

客户端安全性 页面上解释了 SSL / TLS 和其他与安全相关的配置。

通过Beans 配置

虽然这个项目提供大多数功能作为配置选项,但有时会因为添加它的开销太高了,我们会选择没有添加它。 如果您觉得这是一项重要功能,请随意打开一项功能性 Pull Request。

如果您要更改应用程序,而不是通过属性进行更改,则可以使用该项目中现有存在的扩展点。

首先,大多数 bean 可以被自定义 bean 替换,您可以按照您想要的任何方式进行配置。 如果您不希望这么麻烦,可以使用 GrpcChannelConfigurerStubTransformer 等类来配置 channels,stubs 和其他组件,它不会丢失这个项目所提供的任何功能。

GrpcChannelConfigurer

gRPC 客户端配置器允许您将自定义配置添加到 gRPC 的 ManagedChannelBuilder

@Bean
public GrpcChannelConfigurer keepAliveClientConfigurer() {
    return (channelBuilder, name) -> {
        if (channelBuilder instanceof NettyChannelBuilder) {
            ((NettyChannelBuilder) channelBuilder)
                    .keepAliveTime(30, TimeUnit.SECONDS)
                    .keepAliveTimeout(5, TimeUnit.SECONDS);
        }
    };
}

注意,根据您的配置,在应用上下文中可能有不同类型的 ManagedChannelBuilder (例如InProcessChannelFactory)。

StubTransformer

StubTransformer 允许您在注入您的 Bean 之前修改Stub

@Bean
public StubTransformer call() {
    return (name, stub) -> {
        if ("serviceA".equals(name)) {
            return stub.withWaitForReady();
        } else {
            return stub;
        }
    };
}

附加主题


<- 返回索引