IMPORTANTE: esta documentação foi descontinuada. Leia a documentação gRPC atualizada no nosso novo portal de documentação.
O componente gRPC permite a realização de chamadas a serviços gRPC do tipo unário e client stream via payload ou via arquivo.
Dê uma olhada nos parâmetros de configuração do componente:
Method Type: tipo de método que será utilizado na invocação do serviço. Os tipos de métodos suportados são Unary, Client Stream - via Payload e Client Stream - via File. Esse parâmetro não suporta Double Braces.
URL: endereço de chamada do serviço gRPC. Ex: localhost:50051. Esse parâmetro não suporta Double Braces.
Headers: configura todos os tipos de headers necessários para chamada (ex.: Authorization: Bearer Co4ECg1FeGFtcGxlLnByb3RvIjwKDEh).
Service name: nome do serviço que está descrito dentro do arquivo de configuração .proto do servidor gRPC. Esse parâmetro não suporta Double Braces. No exemplo abaixo o Service Name será “Greeter”:
service Greeter {
rpc helloMethod(Hellorequest) returns (HelloResponse);
}
Method Name: nome do método que está descrito dentro do arquivo de configuração .proto do servidor gRPC. Esse parâmetro não suporta Double Braces.
No exemplo abaixo o Method Name será “helloMethod”:
service Greeter {
rpc helloMethod(Hellorequest) returns (HelloResponse);
}
Proto Descriptor File: base64 do arquivo “Descriptor” do arquivo .proto. Primeiramente, o “Descriptor” deverá ser gerado a partir de um arquivo .proto. Para fazer isso, basta rodar o seguinte comando no diretório corrente que estiver localizado o arquivo .proto:
1. Gerar o arquivo "descriptor"
Arquivo .proto do diretório: Example.proto
Nome do arquivo descriptor a ser gerado: proto.desc
protoc --include_imports --descriptor_set_out=proto.desc Example.proto
Download do compilador protoc: https://grpc.io/docs/protoc-installation/
2. Realizar o encode deste arquivo para base64:
tLmRpZ2liZWUuZ3JwY0IMRGlnaWJlZVByb3RvUAGiAgNITFdiBnByb3RvMw==
3. Informar o base64 na propriedade "Proto Descriptor File"
Esse parâmetro não suporta Double Braces.
Payload: o payload de requisição que será enviado ao servidor gRPC. Para o tipo de método Unary, deverá ser utlizado um objeto simples que contenha os campos definidos no arquivo .proto. Para o tipo de método Client Stream - via Payload deverá ser utilizado um array de objetos, onde cada item do array é uma mensagem a ser enviada ao servidor gRPC. Esse parâmetro aceita Double Braces.
File Name: nome do arquivo que será usado para enviar o payload no modo Client Stream - via File. Esse arquivo deverá ser um arquivo JSON que contenha um array e, dentro desse array, deve haver as mensagens a serem enviadas ao gRPC server de forma assíncrona (stream).
JSON Path: expressão JSON Path que irá determinar como será feita a leitura em stream do arquivo JSON. Somente para o tipo de método Client Stream - via File.
Connection Timeout: tempo de expiração da conexão com o servidor (em milissegundos).
Request Timeout: tempo de expiração da chamada de requisição do componente com o servidor gRPC (em milissegundos).
Fail On Error: se a opção estiver habilitada, a execução do pipeline com erro será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade "success".
IMPORTANTE: note que alguns dos parâmetros acima suportam Double Braces. Para entender como essa linguagem funciona, leia o nosso artigo clicando aqui.
Fluxo de mensagens
Entrada
Espera-se um payload de entrada que será utilizado dentro do parâmetro payload do componente.
Saída
Ao executar um componente SFTP utilizando as operações download, upload ou move, a seguinte estrutura de JSON será gerada:
{
"response": {},
"success": "true"
}
response: JSON de resposta recebido do serviço gRPC
success: "true" se houve uma conexão e o script foi executado mesmo se retornar erros no stderr
Saída com erro
{
"success": false,
"message": "Something went wrong while trying to call the gRPC server",
"error": "java.net.SocketTimeoutException: connect timed out"
}
success: “false” quando a operação falha
message: mensagem sobre o erro
exception: informação sobre o tipo de erro ocorrido
Para entender melhor o fluxo das mensagens na Plataforma, clique aqui e leia o nosso artigo.
Componente gRPC em Ação
Unary
Dado o seguinte arquivo .proto:
Example.proto
syntax = "proto3";
package digibee;
service Greeter {
rpc unary (HelloRequest) returns (HelloReply) {}
rpc clientStream (stream HelloRequest) returns (HelloReply) {}
rpc serverStream (HelloRequest) returns (stream HelloReply) {}
rpc Bidi(stream HelloRequest) returns (stream HelloReply);
}
message HelloRequest {
string name = 1;
string address = 2;
}
message HelloReply {
string message = 1;
int32 status = 2;
}
Primeiramente, é preciso gerar o arquivo “descriptor”:
1. Dentro do diretório do arquivo, executar o comando:
protoc --include_imports --descriptor_set_out=proto.desc Example.proto
2. Com o “descriptor” em mão, gerar o base64 do arquivo proto.desc e adicioná-lo no campo Proto Descriptor File.
Configurações do componente:
Method Type: Unary
URL: localhost:50051
Service Name: Greeter
Method Name: unary
Proto Descriptor File: <BASE64 DO ARQUIVO DESCRIPTOR GERADO ACIMA>
Payload:
{
"name": "Charles",
"address": "390 Fifth Avenue"
}
Connect Timeout: 30000
Request Timeout: 30000
Fail On Error: desabilitado
Resposta
{
"message": "Hi Charles",
"status": 200
}
Client Stream - via Payload
Dado o arquivo .proto:
Example.proto
syntax = "proto3";
package digibee;
service Greeter {
rpc unary (HelloRequest) returns (HelloReply) {}
rpc clientStream (stream HelloRequest) returns (HelloReply) {}
rpc serverStream (HelloRequest) returns (stream HelloReply) {}
rpc Bidi(stream HelloRequest) returns (stream HelloReply);
}
message HelloRequest {
string name = 1;
string address = 2;
}
message HelloReply {
string message = 1;
int32 status = 2;
}
Primeiramente, é preciso gerar o arquivo “descriptor”:
1. Dentro do diretório do arquivo, executar o comando:
protoc --include_imports --descriptor_set_out=proto.desc Example.proto
2. Com o “descriptor” em mão, gerar o base64 do arquivo proto.desc e adicioná-lo no campo Proto Descriptor File.
Configurações do componente:
Method Type: Client Stream - via Payload
URL: localhost:50051
Service Name: Greeter
Method Name: clientStream
Proto Descriptor File: <BASE64 DO ARQUIVO DESCRIPTOR GERADO ACIMA>
Payload:
[
{
"name": "Charles",
"address": "390 Fifth Avenue"
},
{
"name": "Paul",
"address": "32 Seventh Avenue"
},
{
"name": "Yan",
"address": "12 Fourth Avenue"
}
]
Connect Timeout: 30000
Request Timeout: 30000
Fail On Error: desabilitado
Resposta
{
"message": "Hi Charles, Paul and Yan",
"status": 200
}
Client Stream - via File
Dado o seguinte arquivo .proto:
Example.proto
syntax = "proto3";
package digibee;
service Greeter {
rpc unary (HelloRequest) returns (HelloReply) {}
rpc clientStream (stream HelloRequest) returns (HelloReply) {}
rpc serverStream (HelloRequest) returns (stream HelloReply) {}
rpc Bidi(stream HelloRequest) returns (stream HelloReply);
}
message HelloRequest {
string name = 1;
string address = 2;
}
message HelloReply {
string message = 1;
int32 status = 2;
}
Primeiramente, é preciso gerar o arquivo “descriptor”:
1. Dentro do diretório do arquivo, executar o comando:
protoc --include_imports --descriptor_set_out=proto.desc Example.proto
2. Com o “descriptor” em mão, gerar o base64 do arquivo proto.desc e adicioná-lo no campo Proto Descriptor File.
Configurações do componente:
Method Type: Client Stream - via Payload
URL: localhost:50051
Service Name: Greeter
Method Name: clientStream
Proto Descriptor File: <BASE64 DO ARQUIVO DESCRIPTOR GERADO ACIMA>
File Name: file.json
file.json:
{ "infos": [
{
"name": "Charles",
"address": "390 Fifth Avenue"
},
{
"name": "Paul",
"address": "32 Seventh Avenue"
},
{
"name": "Yan",
"address": "12 Fourth Avenue"
}
]
}
JSON Path: $.infos[*]
Connect Timeout: 30000
Request Timeout: 30000
Fail On Error: desabilitado
Resposta
{
"message": "Hi Charles, Paul and Yan",
"status": 200
}