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.