介绍
本文介绍如何通过 rk-boot 快速搭建 gRPC 超时拦截器。
什么是 gRPC 超时拦截器?
拦截器会拦截 gRPC 请求,并根据策略返回超时错误。
安装
1
2
|
go get github.com /rookie-ninja/rk-boot go get github.com /rookie-ninja/rk-grpc |
快速开始
使用 rk-boot 启动的 gRPC 服务。
支持全局超时和 API 超时设定。
1.创建 boot.yaml
boot.yaml 文件告诉 rk-boot 如何启动 gRPC 服务。
为了验证,我们启动了 commonService,commonService 里包含了一系列常用 API,例如 /rk/v1/gc。
设定全局超时为 5秒,让 GC 的超时时间定位 1 毫秒,GC 一般会超过 1 毫秒。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
--- grpc: - name: greeter # Required port: 8080 # Required enabled: true # Required commonService: enabled: true # Optional, Enable common service for testing interceptors: timeout: enabled: true # Optional, default: false timeoutMs: 5000 # Optional, default: 5000 paths: - path: "/rk.api.v1.RkCommonService/Gc" # Optional, default: "" timeoutMs: 1 # Optional, default: 5000 |
2.创建 main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
// Copyright (c) 2021 rookie-ninja // // Use of this source code is governed by an Apache-style // license that can be found in the LICENSE file. package main import ( "context" "github.com/rookie-ninja/rk-boot" _ "github.com/rookie-ninja/rk-grpc/boot" ) // Application entrance. func main() { // Create a new boot instance. boot := rkboot.NewBoot() // Bootstrap boot.Bootstrap(context.Background()) // Wait for shutdown sig boot.WaitForShutdownSig(context.Background()) } |
3.启动 main.go
1
|
$ go run main.go |
4.验证
发送 GC 请求。
1
2
3
4
5
6
|
$ grpcurl -plaintext localhost:8080 rk.api.v1.RkCommonService.Gc ERROR: Code: Canceled Message: Request timed out! Details: 1) { "@type" : "type.googleapis.com/rk.api.v1.ErrorDetail" , "code" :1, "message" : "[from-grpc] Request timed out!" , "status" : "Canceled" } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$ curl -X GET localhost: 8080 /rk/v 1 /gc { "error" :{ "code" : 408 , "status" : "Request Timeout" , "message" : "Request timed out!" , "details" :[ { "code" : 1 , "status" : "Canceled" , "message" : "[from-grpc] Request timed out!" } ] } } |
以上就是gRPC超时拦截器实现示例的详细内容,更多关于gRPC超时拦截器的资料请关注服务器之家其它相关文章!
原文链接:https://juejin.cn/post/7030478524523741221