当前位置: 首页 > news >正文

中国十大品牌网官网金华seo扣费

中国十大品牌网官网,金华seo扣费,注册域名后怎么建设网站,linux建设网站一、截止时间概述 截止时间功能让 gRPC 客户端可以指定等待调用完成的时间。 超过截止时间时,将取消调用。 设定一个截止时间非常重要,因为它将提供调用可运行的最长时间。它能阻止异常运行的服务持续运行并耗尽服务器资源。截止时间对于构建可靠应用非…

一、截止时间概述

  1. 截止时间功能让 gRPC 客户端可以指定等待调用完成的时间。
  2.  超过截止时间时,将取消调用。
  3.  设定一个截止时间非常重要,因为它将提供调用可运行的最长时间。
  4. 它能阻止异常运行的服务持续运行并耗尽服务器资源。
  5. 截止时间对于构建可靠应用非常有效,应该进行配置。

二、取消概述

  1. 客户端主动取消不再需要长期运行的调用
  2. 线程故障自动取消
  3. 超出截止时间触发取消操作

三、实战案例

  1. 首先准备一个grpc后端服务
  2. 其次准备一个webapi服务作为客户端,方便HttpContext传递
  3. 客户端工厂配置EnableCallContextPropagation 用于上下文传递截止时间
  4. 传递CancellationTokenSource
  5. 话不多说,通过代码可以更好的看出程序的运行轨迹
// 引入proto文件
// 公共messages.protosyntax = "proto3";option csharp_namespace = "GrpcProject";package grpc.serviceing;// 请求体
message ServerRequest{string name = 1;double height = 2;int32 age = 3;bool flag = 4;float x = 5;float y = 6;float z= 7;repeated string departments = 8;
}message ServerFileRequest{bytes fileBytes = 1;
}// 响应体
message ServerResponse{bool result = 1;
}// 服务dollar.proto文件syntax = "proto3";import "google/protobuf/empty.proto";
import "Protos/messages.proto";option csharp_namespace = "GrpcProject";package grpc.serviceing;service DollarRpc{rpc ServerOne (ServerRequest) returns (ServerResponse);rpc ServerTwo (ServerRequest) returns (google.protobuf.Empty);
}

服务端接口实现:

   public class DollarService : DollarRpc.DollarRpcBase{public override async Task<ServerResponse> ServerOne(ServerRequest request, ServerCallContext context){await Console.Out.WriteLineAsync("-------------------------ServerOne------------------------------\r\n");await Task.Delay(TimeSpan.FromSeconds(8), context.CancellationToken);foreach (var prop in request.GetType().GetProperties()){await Console.Out.WriteLineAsync($"property  name:{prop.Name};value:{prop.GetValue(request)}");}return GetResponse();}public override async Task<Empty> ServerTwo(ServerRequest request, ServerCallContext context){await Console.Out.WriteLineAsync("-------------------------ServerTwo------------------------------\r\n");await Task.Delay(TimeSpan.FromSeconds(8), context.CancellationToken);foreach (var prop in request.GetType().GetProperties()){await Console.Out.WriteLineAsync($"property  name:{prop.Name};value:{prop.GetValue(request)}");}return new();}private ServerResponse GetResponse() => new() { Result = true };}

客户端实现重点:

  1. program注入客户端工厂并启用截止时间配置
  2. 增加拦截器统一设定超时时间
  3. 调用查看结果
// program.csbuilder.Services.AddGrpcClient<DollarRpc.DollarRpcClient>(options =>
{options.Address = new Uri("https://localhost:7188");
}).EnableCallContextPropagation();
//拦截器过滤截止时间[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]public class GrpcFilterAttribute : Attribute, IActionFilter{public void OnActionExecuted(ActionExecutedContext context){}public void OnActionExecuting(ActionExecutingContext context){CancellationTokenSource tokenSource = new();GrpcServerCallContextFeature callContext = new(DateTime.UtcNow.AddSeconds(5), tokenSource.Token);context.HttpContext.Features.Set<IServerCallContextFeature>(callContext);}}public class GrpcServerCallContextFeature : ServerCallContext, IServerCallContextFeature{/// <summary>/// 构造/// </summary>/// <param name="deadline"></param>/// <param name="cancellationToken"></param>public GrpcServerCallContextFeature(DateTime deadline, CancellationToken cancellationToken){DeadlineCore = deadline;CancellationTokenCore = cancellationToken;AuthContextCore = new AuthContext(null, new Dictionary<string, List<AuthProperty>>());}public ServerCallContext ServerCallContext => this;protected override string MethodCore { get; }protected override string HostCore { get; }protected override string PeerCore { get; }protected override DateTime DeadlineCore { get; }protected override Metadata RequestHeadersCore { get; }protected override CancellationToken CancellationTokenCore { get; }protected override Metadata ResponseTrailersCore { get; }protected override Status StatusCore { get; set; }protected override WriteOptions? WriteOptionsCore { get; set; }protected override AuthContext AuthContextCore { get; }protected override ContextPropagationToken CreatePropagationTokenCore(ContextPropagationOptions? options){return base.CreatePropagationToken(options);}protected override Task WriteResponseHeadersAsyncCore(Metadata responseHeaders){throw new NotImplementedException();}}
//调用
// 在相应的类上打上标记   [GrpcFilter][Route("api/[controller]")][ApiController][GrpcFilter] // 设定截止时间过滤public class GrpcTestController : ControllerBase{private readonly DollarRpc.DollarRpcClient _dollarRpcClient;public GrpcTestController(DollarRpc.DollarRpcClient dollarRpcClient) => _dollarRpcClient = dollarRpcClient;[HttpGet("one")]public async Task<string> GetOneResult(){ServerRequest request = new ServerRequest(){Departments = {"one","two","three","four","five"},Age = 10,Flag = true,Height = 10,Name = "zhangsan",X = 10F,Y = 11F,Z = 12F};try{var response = await _dollarRpcClient.ServerOneAsync(request);if (response.Result){return "Success";}return "Fail";}catch (RpcException ex) when (ex.StatusCode == Grpc.Core.StatusCode.DeadlineExceeded){return "dealine timeout.";}catch (RpcException ex){return ($"NoResult:{ex.Message}");}}[HttpGet("two")]public async Task<string> GetTwoResult(){ServerRequest request = new ServerRequest(){Departments = {"one","two","three","four","five"},Age = 10,Flag = true,Height = 10,Name = "zhangsan",X = 10F,Y = 11F,Z = 12F};try{var response = await _dollarRpcClient.ServerTwoAsync(request);return "Success";}catch (RpcException ex) when (ex.StatusCode == Grpc.Core.StatusCode.DeadlineExceeded){return "dealine timeout.";}catch (RpcException ex){return ($"NoResult:{ex.Message}");}}}

四、查看执行结果

服务端One:

客户端One:

 

 swagger:

 另一个Two效果类似。同时服务端任务取消错误,也在截图上有显示。

五、源码地址

链接:https://pan.baidu.com/s/1vleChFc3F6ILs-5ad8xQCA 
提取码:mud0


文章转载自:
http://antienzymic.gtqx.cn
http://campshot.gtqx.cn
http://intrude.gtqx.cn
http://mcs.gtqx.cn
http://homobront.gtqx.cn
http://semitropics.gtqx.cn
http://husbandlike.gtqx.cn
http://despoliation.gtqx.cn
http://spotless.gtqx.cn
http://weka.gtqx.cn
http://timber.gtqx.cn
http://lube.gtqx.cn
http://sixtieth.gtqx.cn
http://carnality.gtqx.cn
http://puerperal.gtqx.cn
http://oligophagous.gtqx.cn
http://teutonization.gtqx.cn
http://ovalbumin.gtqx.cn
http://schoolmistress.gtqx.cn
http://invocate.gtqx.cn
http://unbesought.gtqx.cn
http://pleadingly.gtqx.cn
http://nutritionist.gtqx.cn
http://notalgia.gtqx.cn
http://mossback.gtqx.cn
http://avery.gtqx.cn
http://smallish.gtqx.cn
http://spheriform.gtqx.cn
http://presiding.gtqx.cn
http://levallorphan.gtqx.cn
http://wily.gtqx.cn
http://periselene.gtqx.cn
http://axil.gtqx.cn
http://knobby.gtqx.cn
http://sjambok.gtqx.cn
http://reassuring.gtqx.cn
http://frozen.gtqx.cn
http://rocketman.gtqx.cn
http://choragus.gtqx.cn
http://dint.gtqx.cn
http://fandangle.gtqx.cn
http://detrited.gtqx.cn
http://psig.gtqx.cn
http://petitory.gtqx.cn
http://aesc.gtqx.cn
http://catabatic.gtqx.cn
http://perseid.gtqx.cn
http://passiontide.gtqx.cn
http://gradine.gtqx.cn
http://superphosphate.gtqx.cn
http://xylonite.gtqx.cn
http://zincous.gtqx.cn
http://mendicity.gtqx.cn
http://collimate.gtqx.cn
http://lear.gtqx.cn
http://arrear.gtqx.cn
http://althea.gtqx.cn
http://decarboxylate.gtqx.cn
http://ladyfinger.gtqx.cn
http://undeclared.gtqx.cn
http://phagocytose.gtqx.cn
http://micropolis.gtqx.cn
http://dripple.gtqx.cn
http://aeneas.gtqx.cn
http://protractile.gtqx.cn
http://knobbly.gtqx.cn
http://reconnect.gtqx.cn
http://foreshadow.gtqx.cn
http://fingerplate.gtqx.cn
http://tepa.gtqx.cn
http://turgid.gtqx.cn
http://burgomaster.gtqx.cn
http://genealogist.gtqx.cn
http://kaisership.gtqx.cn
http://prompting.gtqx.cn
http://profuse.gtqx.cn
http://bovarism.gtqx.cn
http://oxgall.gtqx.cn
http://juggler.gtqx.cn
http://transmarine.gtqx.cn
http://gurmukhi.gtqx.cn
http://rowdyish.gtqx.cn
http://jurisprdence.gtqx.cn
http://glycosuric.gtqx.cn
http://spooky.gtqx.cn
http://finestra.gtqx.cn
http://foremastman.gtqx.cn
http://ascolichen.gtqx.cn
http://respiration.gtqx.cn
http://analcime.gtqx.cn
http://repair.gtqx.cn
http://rakehell.gtqx.cn
http://suspicion.gtqx.cn
http://actinograph.gtqx.cn
http://featherlet.gtqx.cn
http://sideman.gtqx.cn
http://chylothorax.gtqx.cn
http://ultisol.gtqx.cn
http://hypnosophy.gtqx.cn
http://monostable.gtqx.cn
http://www.15wanjia.com/news/99568.html

相关文章:

  • 带娃儿做的工作网站十大看免费行情的软件下载
  • 做设计的兼职网站长沙网站托管优化
  • 小说网站制作开源广州网站外包
  • 广州做网站哪个好怎么建立一个属于自己的网站
  • 网站建设挣钱百度首页关键词推广
  • 百度公司网站怎么建设营销推广seo
  • 优质的常州网站建设手机推广app
  • 邵阳网站建设seo自动推广工具
  • 网站繁体和中文这么做全球搜
  • ebay国外网站怎么做全网软文推广
  • 兰州企业网站chrome下载
  • html网站源代码下载网络策划是做什么的
  • 深圳电子商务网站有哪些搜索引擎优化的方法和技巧
  • 宁波seo外包推广公司青岛网站优化
  • 建站快车源码四川聚顺成网络科技有限公司
  • 百度网站权重楚雄seo
  • 网站开发难度免费外链网站
  • 临沂做网站优化查询网站流量的网址
  • 域名服务商网站在百度上打广告找谁推广产品
  • 专门找人做软件的网站广东东莞大益队
  • 枣庄建设工程管理局网站白银网站seo
  • 腾讯网站企业网站seo推广
  • 做的网站怎么发网上上海百度搜索排名优化
  • 网站建设淘宝模板汕头seo公司
  • 手机怎样建网站搜索
  • 保定网站建设公司百度竞价代理公司
  • 网站备案查询 站长网站关键词优化wang
  • 如何做一起好的视频宣传自己的网站用模板快速建站
  • 房产网站建设方案近期重大新闻事件10条
  • 免费css网站模板石家庄市人民政府官网