Я работаю над своим собственным GRPCLoadBalancer на основе https://github.com/grpc/grpc/blob/master/doc/load-balancing.md и https://godoc.org/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1, он работает довольно хорошо.
В настоящее время мне нужно отправить пользовательскийкод ошибки в виде кода состояния и пользовательское сообщение об ошибке в виде сообщения об ошибке, когда клиент пытается подключиться к нисходящей службе (через мой Grpc LoadBalancer)
По сути, я пытаюсь отправить с помощью этого пользовательского кода ошибки и сообщение отBalanceLoad()
.Сигнатура функции (часть интерфейса LoadBalancerServer)
BalanceLoad(LoadBalancer_BalanceLoadServer) error
Этот метод позволяет только генерировать ошибку (которая по сути является строкой ошибки), и я видел, что генерируемая ошибка не достигает клиента,Как я могу отправить свое пользовательское сообщение об ошибке и код на канал Grpc, чтобы клиент получал мою пользовательскую ошибку, а не сообщение об ошибке типа:
Grpc.Core.RpcException: Status(StatusCode=Unknown, Detail="Failed to create subchannel")
Так что вместо StatusCode = "Unknown"
, это будет мой пользовательскийКод ошибки и детализация будут отображаться в моем пользовательском сообщении об ошибке.