Transformação
É possível aplicar transformações nas mensagens trafegadas no fluxo. Pode ser aplicada em qualquer tipo de configuração, inclusive com uma configuração de Processamento em Streaming.
No momento, as transformações funcionam apenas com payloads com Content-Type application/json
.
Tipos
As seguintes transformações são aceitas:
HTTP
Permite que um endpoint HTTP externo seja consumido durante o processamento e atribui o resultado à mensagem.
Bloblang
Permite um mapeamento usando a sintaxe bloblang e atribui o resultado à mensagem.
Para realizar testes da sintaxe a ferramenta Bloblang Walkthrough pode ser utilizada.
Delete
Permite uma a sintaxe bloblang que retorne um valor booleano indicando se a mensagem deve ser excluída.
Parâmetros
Parâmetros aceitos na configuração de transformação:
transformer.description
Descrição do estágio de transformação
Tipo: string
transformer.workflow
Configuração de prioridade de execução do fluxo
Tipo: [][]string
Valor padrão: [[id1,id2,...]]
transformer.steps
Lista com as etapas de transformação
Tipo: list Obrigatório
transformer.steps.type
Tipo de transformação
Tipo: enum[BLOBLANG HTTP DELETE] Obrigatório
transformer.steps.id
Id da transformação. Campo que recebe o resultado da transformação se o campo override
é falso.
Tipo: string [alphanum_-] Obrigatório - Único entre as etapas
transformer.steps.ignore_error
Ignorar erro durante a transformação
Tipo: boolean
Valor padrão: false
transformer.steps.override
Substituir conteúdo da mensagem com o resultado da transformação
Tipo: boolean
Valor padrão: false
transformer.steps.http
Transformação do tipo Http
Tipo: object
Obrigatório se o campo type
for igual a HTTP
transformer.steps.http.url
Url do endpoint http a ser chamado
Tipo: string Obrigatório
transformer.steps.http.verb
Tipo da requisição
Tipo: enum[GET POST] Obrigatório
transformer.steps.http.headers
Cabeçalhos da requisição
Tipo: object
Valor padrão: -
transformer.steps.http.timeout_seconds
Tempo máximo da resposta em segundos
Tipo: int [1-60]
Valor padrão: 5
transformer.steps.http.ignore_error_codes
Códigos de erro da reposta que devem ser ignorados
Tipo: []int
Valor padrão: []
transformer.steps.http.body.mapping
Tipo: string
Valor padrão: "root = this"
transformer.steps.http.rate_limit
Configuração de limites da requisição
Tipo: object
Valor padrão: {}
transformer.steps.http.rate_limit.count
Quantidade máxima de requisições
Tipo: int
Valor padrão: -
transformer.steps.http.rate_limit.interval_seconds
Intervalo em segundos
Tipo: int
Valor padrão: -
transformer.steps.http.basic_auth
Autenticação básica da requisição
Tipo: object
Valor padrão: {}
transformer.steps.http.basic_auth.user_id
Identificador de acesso
Tipo: string Obrigatório
transformer.steps.http.basic_auth.password
Senha de acesso
Tipo: string Obrigatório
transformer.steps.http.oauth
Autenticação oauth da requisição
Tipo: object
Valor padrão: {}
transformer.steps.http.oauth.consumer_key
Chave de consumo da API
Tipo: string Obrigatório
transformer.steps.http.oauth.consumer_secret
Segredo de consumo da API
Tipo: string Obrigatório
transformer.steps.http.oauth.access_token
Token de acesso da API
Tipo: string Obrigatório
transformer.steps.http.oauth.access_token_secret
Segredo do token de acesso da API
Tipo: string Obrigatório
transformer.steps.http.oauth2
Autenticação oauth 2 da requisição
Tipo: object
Valor padrão: {}
transformer.steps.http.oauth2.client_key
Chave do cliente da API
Tipo: string Obrigatório
transformer.steps.http.oauth2.client_secret
Segredo do cliente da API
Tipo: string Obrigatório
transformer.steps.http.oauth2.token_url
Url do serviço de autenticação
Tipo: string Obrigatório
transformer.steps.http.oauth2.scopes
Escopos de autenticação
Tipo: []string
Valor padrão: []
transformer.steps.http.oauth2.endpoint_params
Parâmetros adicionais do serviço de autenticação
Tipo: map[string][]string
Valor padrão: {}
transformer.steps.bloblang
Transformação do tipo Bloblang
Tipo: object
Obrigatório se o campo type
for igual a BLOBLANG
transformer.steps.bloblang.mapping
Tipo: string Obrigatório
transformer.steps.delete
Transformação do tipo Delete
Tipo: object
Obrigatório se o campo type
for igual a DELETE
transformer.steps.delete.mapping
Tipo: string Obrigatório
Requisição
Para habilitar a transformação a seguinte requisição pode ser realizada:
No exemplo acima foi gerada uma configuração do Firehose que aplica 3 etapas de transformação de forma sequencial na mensagem.
A primeira etapa realiza uma requisição http e armazena o resultado no campo http
. A segunda etapa recupera o resultado do campo adicionado pela etapa anterior e armazena o resultado no campo bloblang
. A última etapa verifica se o valor do campo adicionado na etapa anterior é igual à OK
, em caso positivo a mensagem será apagada.
Last updated