Vai al contenuto

gRPC

Configurazione

Il trigger gRPC è configurabile attraverso il type grpc e i seguenti argomenti:

ArgomentoDescrizioneOpzionale
serverAddressIndirizzo o hostname del server gRPCNo
descriptorSourceFonte da cui ottenere il descriptor gRPCNo
methodNome del metodo gRPC da chiamareNo
metadataMetadata da includere nella chiamata gRPCSi
dataCorpo della richiesta gRPCSi

Descriptor source

Il campo descriptorSource specifica la fonte da cui ottenere il descriptor gRPC, che è necessario per poter effettuare la chiamata gRPC. Mtracer supporta file e serverReflection come fonti per il descriptor gRPC, specificabili attraverso il campo type all’interno di descriptorSource.

File

Se si utilizza file come fonte per il descriptor gRPC, è necessario specificare il percorso del file del descriptor gRPC attraverso il campo protoPath all’interno di descriptorSource.

Esempio:

descriptorSource:
    type: "file"
    protoPath: "./greeter.proto"

Server reflection

Se si utilizza serverReflection come fonte per il descriptor gRPC, è sufficiente specificare il tipo serverReflection all’interno di descriptorSource, in questo modo Mtracer utilizzerà la funzionalità di server reflection per ottenere il descriptor gRPC direttamente dal server gRPC specificato nell’argomento serverAddress.

Esempio:

descriptorSource:
    type: "serverReflection"

Method

Il campo method specifica il nome del metodo gRPC da chiamare, che deve essere specificato nel formato package.service.method, ad esempio helloworld.Greeter.SayHello.

Metadata

Il campo metadata specifica i metadata da includere nella chiamata gRPC, che devono essere specificati come coppie chiave-valore all’interno di una mappa YAML.

Esempio:

metadata:
    key1: "value1"
    key2: "value2"

Data

Il campo data specifica il corpo della richiesta gRPC, che deve essere specificato in formato coppie chiave-valore all’interno di una mappa YAML, in questo modo Mtracer convertirà automaticamente la mappa YAML in un messaggio gRPC secondo il descriptor in possesso.

Esempio partendo da un messaggio gRPC definito come segue:

message RollRequest {
    string                    rollerName   = 1;
    google.protobuf.Timestamp rollTime     = 2;
    google.protobuf.Duration  rollDuration = 3;
}

Si converte in un corpo della richiesta gRPC specificato in YAML come segue:

data:
    rollerName: "Alice"
    rollTime: "2023-10-01T12:00:00Z"
    rollDuration: "10s"