gRPC
Descubra mais sobre o componente gRPC e saiba como utilizá-lo na Digibee Integration Platform.
O gRPC permite a realização de chamadas a serviços gRPC do tipo unário e client stream via payload ou via arquivo.
Parâmetros
Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB).
Authenticate with client certificates
Quando ativado, pode selecionar autenticação de cliente com certificados de cliente (mTLS). Use o tipo de conta Certificate Chain.
False
Booleano
Authenticate with Google Key
Quando ativado, pode selecionar a autenticação do cliente com Google Key. Use o tipo de conta Google Key.
False
Booleano
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.
Unary
String
URL
Endereço de chamada do serviço gRPC. Ex: localhost:50051.
N/A
String
Headers (DB)
Configura todos os tipos de headers necessários para chamada (ex.: Authorization: Bearer Co4ECg1FeGFtcGxlLnByb3RvIjwKDEh).
N/A
Par de chave-valor
Custom Accounts
Defina a conta a ser usada em expressões com Double Braces.
N/A
String
Service name
Nome do serviço que está descrito dentro do arquivo de configuração .proto do servidor gRPC. Aprenda mais em Informações adicionais sobre parâmetros.
N/A
String
Method Name
Nome do método que está descrito dentro do arquivo de configuração .proto do servidor gRPC. Aprenda mais em Informações adicionais sobre parâmetros.
N/A
String
Proto Descriptor File
Base64 do arquivo “descriptor” do arquivo .proto. Aprenda mais em Informações adicionais sobre parâmetros.
N/A
String (Base64)
Payload (DB)
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.
N/A
Objeto JSON ou Array
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).
N/A
String
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.
N/A
String
Connect Timeout
Tempo de expiração da conexão com o servidor (em milissegundos).
30000
Inteiro
Request Timeout
Tempo de expiração da chamada de requisição do componente com o servidor gRPC (em milissegundos).
30000
Inteiro
Fail On Error
Se a opção estiver ativada, 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".
False
Booleano
Informações adicionais sobre parâmetros
Service Name
Veja um exemplo de Service Name como “Greeter”:
service Greeter {
rpc helloMethod(Hellorequest) returns (HelloResponse);
}Method Name
Veja um exemplo de Method Name como “helloMethod”:
service Greeter {
rpc helloMethod(Hellorequest) returns (HelloResponse);
}Proto Descriptor File
Para usar esse parâmetro, o “descriptor” deve ser gerado primeiro a partir de um arquivo .proto. Para fazer isso, siga os passos abaixo:
Gere o arquivo "descriptor" executando o seguinte comando no diretório corrente que estiver localizado o arquivo .proto:
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.protoFaça o download do compilador protoc em Protocol Buffer Compiler Installation.
Realize o encode deste arquivo para base64:
tLmRpZ2liZWUuZ3JwY0IMRGlnaWJlZVByb3RvUAGiAgNITFdiBnByb3RvMw==Informe o base64 na propriedade Proto Descriptor File.
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 houver uma conexão e o script for 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, leia a documentação sobre Processamento de mensagens.
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”:
Dentro do diretório do arquivo, execute o comando:
protoc --include_imports --descriptor_set_out=proto.desc Example.protoCom o “descriptor” em mão, gere o base64 do arquivo proto.desc e adicione-o 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”:
Dentro do diretório do arquivo, execute o comando:
protoc --include_imports --descriptor_set_out=proto.desc Example.protoCom o “descriptor” em mão, gere o base64 do arquivo proto.desc e adicione-o 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”:
Dentro do diretório do arquivo, execute o comando:
protoc --include_imports --descriptor_set_out=proto.desc Example.protoCom o “descriptor” em mão, gere o base64 do arquivo proto.desc e adicione-o 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 Name: 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
}Atualizado
Isto foi útil?