zoukankan      html  css  js  c++  java
  • gRPC 客户端工厂集成

    gRPC 与 HttpClientFactory 的集成提供了一种创建 gRPC 客户端的集中方式。 它可用作配置独立 gRPC 客户端实例的替代方法。 Grpc.Net.ClientFactory NuGet 包中提供了工厂集成。

    工厂具有以下优势:

    • 提供了用于配置逻辑 gRPC 客户端实例的中心位置
    • 可管理基础 HttpClientMessageHandler 的生存期
    • 在 ASP.NET Core gRPC 服务中自动传播截止时间和取消

    注册和配置 gRPC 客户端

    services
        .AddGrpcClient<Greeter.GreeterClient>(o =>
        {
            o.Address = new Uri("https://localhost:5001");
        })
        .ConfigurePrimaryHttpMessageHandler(() =>
        {
            var handler = new HttpClientHandler();
            handler.ClientCertificates.Add(LoadCertificate());
            return handler;
        });

    配置通道和侦听器

    特定于 gRPC 的方法可用于:

    • 配置 gRPC 客户端的基础通道。
    • 添加客户端在进行 gRPC 调用时将使用的 Interceptor 实例。
    services
        .AddGrpcClient<Greeter.GreeterClient>(o =>
        {
            o.Address = new Uri("https://localhost:5001");
        })
        .AddInterceptor(() => new LoggingInterceptor())
        .ConfigureChannel(o =>
        {
            o.Credentials = new CustomCredentials();
        });

    GRPC 客户端工厂提供了一种集中配置通道的方法。 它会自动重用基础通道。

    截止时间和取消传播

    可以使用 EnableCallContextPropagation() 对 gRPC 服务中工厂所创建的 gRPC 客户端进行配置,以自动将截止时间和取消令牌传播到子调用。 Grpc.AspNetCore.Server.ClientFactory NuGet 包中提供了 EnableCallContextPropagation() 扩展方法。

    默认情况下,如果客户端在 gRPC 调用的上下文之外使用,EnableCallContextPropagation 将引发错误。 此错误旨在提醒你没有要传播的调用上下文。 如果要在调用上下文之外使用客户端,请使用 SuppressContextNotFoundErrors 在配置客户端时禁止显示该错误:

    services
        .AddGrpcClient<Greeter.GreeterClient>(o =>
        {
            o.Address = new Uri("https://localhost:5001");
        })
        .EnableCallContextPropagation(o => o.SuppressContextNotFoundErrors = true);
  • 相关阅读:
    解决“Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'org.springframework.boot' not found.”
    linux随机生成密码
    NFS网络共享文件系统
    shell实现带颜色输出的进度条
    【AtCoder】 ARC 101
    【AtCoder】 ARC 102
    【AtCoder】 ARC 103
    20190814校内模拟赛
    「2019-8-13提高模拟赛」树 (tree)
    [PA2014]Fiolki
  • 原文地址:https://www.cnblogs.com/yetsen/p/13762386.html
Copyright © 2011-2022 走看看