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).

Parâmetro
Descrição
Valor padrão
Tipo de dado

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:

  1. 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.proto

Faça o download do compilador protoc em Protocol Buffer Compiler Installation.

  1. Realize o encode deste arquivo para base64:

tLmRpZ2liZWUuZ3JwY0IMRGlnaWJlZVByb3RvUAGiAgNITFdiBnByb3RvMw==
  1. 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”:

  1. Dentro do diretório do arquivo, execute o comando:

protoc --include_imports --descriptor_set_out=proto.desc Example.proto
  1. Com 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”:

  1. Dentro do diretório do arquivo, execute o comando:

protoc --include_imports --descriptor_set_out=proto.desc Example.proto
  1. Com 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”:

  1. Dentro do diretório do arquivo, execute o comando:

protoc --include_imports --descriptor_set_out=proto.desc Example.proto
  1. Com 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

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