Interceptor di Streaming
Impara come implementare interceptor gRPC per gestire chiamate RPC di streaming, inclusi il controllo del flusso, la gestione della connessione e il recupero dagli errori.
Gli interceptor gRPC in Goa sono componenti che operano specificamente sul livello di trasporto gRPC. Questi interceptor possono intercettare e modificare le chiamate RPC, gestire i metadati e implementare funzionalità specifiche per gRPC.
Gli interceptor unari gestiscono le chiamate RPC singole:
Gli interceptor di streaming gestiscono le chiamate RPC di streaming:
Gli interceptor gRPC in Goa seguono il pattern standard di gRPC:
func UnaryInterceptor(ctx context.Context, req interface{},
info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
// Pre-processing
// Modifica la richiesta o i metadati
resp, err := handler(ctx, req)
// Post-processing
// Modifica la risposta o gestisci gli errori
return resp, err
}
func StreamInterceptor(srv interface{}, ss grpc.ServerStream,
info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
// Pre-processing
// Configura lo stream o i metadati
err := handler(srv, ss)
// Post-processing
// Gestisci gli errori o pulisci le risorse
return err
}
Design
Implementazione
Considerazioni Generali
Gli interceptor gRPC vengono eseguiti in un ordine specifico:
Questo permette di:
Alcuni scenari comuni di utilizzo degli interceptor gRPC includono:
Inizia con gli Interceptor Unari per imparare come gestire le chiamate RPC singole.