consul 支持GRPC 心跳地址封装 基于net 6

 

新建一个HealthCheckService.proto  官方标准写法,不要问为什么?

syntax = "proto3";

package grpc.health.v1;

message HealthCheckRequest {
	string service = 1;
}

message HealthCheckResponse {
	enum ServingStatus {
		UNKNOWN = 0;
		SERVING = 1;
		NOT_SERVING = 2;
	}
	ServingStatus status = 1;
}

service Health {
	rpc Check(HealthCheckRequest) returns (HealthCheckResponse);

	rpc Watch(HealthCheckRequest) returns (stream HealthCheckResponse);
}

  

 services 

 

 

  public class HealthCheckService : Health.HealthBase
    {
        public override Task<HealthCheckResponse> Check(HealthCheckRequest request, ServerCallContext context)
        {
            Console.WriteLine($"This is {nameof(HealthCheckService)} Check ");
            //TODO:检查逻辑
            return Task.FromResult(new HealthCheckResponse() { Status = HealthCheckResponse.Types.ServingStatus.Serving });
        }

        public override async Task Watch(HealthCheckRequest request, IServerStreamWriter<HealthCheckResponse> responseStream, ServerCallContext context)
        {
            //TODO:检查逻辑
            await responseStream.WriteAsync(new HealthCheckResponse()
            { Status = HealthCheckResponse.Types.ServingStatus.Serving });
        }
    }

  

 

Program 里面 

管道流程写入方法

app.MapGrpcService<HealthCheckService>();

posted @ 2022-01-17 16:58  非著名架构师  阅读(198)  评论(0编辑  收藏  举报