Как отправить пользовательскую ошибку из моего GRPC Балансировщик нагрузки - PullRequest
0 голосов
/ 04 июля 2019

Я работаю над своим собственным 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", это будет мой пользовательскийКод ошибки и детализация будут отображаться в моем пользовательском сообщении об ошибке.

...