Modelo do Pub/Sub para Redis

O modelo do Pub/Sub para Redis é um pipeline de streaming que lê mensagens de uma assinatura do Pub/Sub e grava o payload da mensagem no Redis. O caso de uso mais comum deste modelo é exportar registros para o Redis Enterprise para análise de registros baseada em pesquisa avançada em tempo real.

  • Para ter mais segurança, ative uma conexão SSL ao configurar a conexão do endpoint do banco de dados. Este modelo não é compatível com TLS mútuo.

Requisitos de pipeline

  • A inscrição do Pub/Sub de origem precisa existir antes da execução do pipeline.
  • O endpoint do banco de dados do Redis precisa ser acessível na sub-rede dos workers do Dataflow.

Parâmetros do modelo

Parâmetros obrigatórios

  • inputSubscription: a assinatura do Pub/Sub em que a entrada será lida. Por exemplo, projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID>.
  • redisHost: o host do banco de dados do Redis. Por exemplo, your.cloud.db.redislabs.com. O padrão é: 127.0.0.1.
  • redisPort: a porta do banco de dados do Redis. Por exemplo, 12345. O padrão é: 6379.
  • redisPassword: a senha do banco de dados do Redis. O padrão é empty.

Parâmetros opcionais

  • sslEnabled: o parâmetro SSL do banco de dados do Redis. O padrão é: falso.
  • redisSinkType: o coletor do Redis. Os valores aceitos são STRING_SINK, HASH_SINK, STREAMS_SINK, and LOGGING_SINK. Por exemplo, STRING_SINK. O padrão é: STRING_SINK.
  • connectionTimeout: o tempo limite da conexão do Redis em milissegundos. Por exemplo, 2000. O padrão é: 2000.
  • ttl: o prazo de validade da chave em segundos. O padrão de ttl para HASH_SINK é -1, o que significa que ele nunca expira.
  • outputDeadletterTopic: o tópico do Pub/Sub para encaminhar mensagens não processáveis. As mensagens que falham na transformação da UDF são encaminhadas aqui. É obrigatório se você estiver usando uma UDF em JavaScript. Por exemplo, projects/<PROJECT_ID>/topics/<TOPIC_NAME>.
  • javascriptTextTransformGcsPath: o URI do Cloud Storage do arquivo .js que define a função definida pelo usuário (UDF) em JavaScript a ser usada. Por exemplo, gs://my-bucket/my-udfs/my_file.js.
  • javascriptTextTransformFunctionName: o nome da função definida pelo usuário (UDF) JavaScript a ser usada. Por exemplo, se o código de função do JavaScript for myTransform(inJson) { /*...do stuff...*/ }, o nome da função será myTransform. Para ver exemplos de UDFs em JavaScript, consulte os exemplos de UDF (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).
  • javascriptTextTransformReloadIntervalMinutes: especifica a frequência de recarregamento da UDF em minutos. Se o valor for maior que 0, o Dataflow vai verificar periodicamente o arquivo da UDF no Cloud Storage e vai atualizar a UDF se o arquivo for modificado. Com esse parâmetro, é possível atualizar a UDF enquanto o pipeline está em execução, sem precisar reiniciar o job. Se o valor for 0, o recarregamento da UDF será desativado. O valor padrão é 0.

Executar o modelo

Console

  1. Acesse a página Criar job usando um modelo do Dataflow.
  2. Acesse Criar job usando um modelo
  3. No campo Nome do job, insira um nome exclusivo.
  4. Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é us-central1.

    Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.

  5. No menu suspenso Modelo do Dataflow, selecione o modelo Pub/Sub para Redis.
  6. Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
  7. Cliquem em Executar job.

gcloud

No shell ou no terminal, execute o modelo:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/ \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       inputSubscription=INPUT_SUBSCRIPTION,\
       redisHost=REDIS_HOST,\
       redisPort=REDIS_PORT,\
       redisPassword=REDIS_PASSWORD,\

Substitua:

  • JOB_NAME: um nome de job de sua escolha
  • VERSION: a versão do modelo que você quer usar

    Use estes valores:

  • REGION_NAME: a região em que você quer implantar o job do Dataflow, por exemplo, us-central1
  • INPUT_SUBSCRIPTION: a assinatura de entrada do Pub/Sub.
  • REDIS_HOST: o host do banco de dados Redis
  • REDIS_PORT: a porta do banco de dados Redis
  • REDIS_PASSWORD: a senha do banco de dados Redis

API

Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a API e os respectivos escopos de autorização, consulte projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "inputSubscription": "INPUT_SUBSCRIPTION",
       "redisHost": "REDIS_HOST",
       "redisPort": "REDIS_PORT",
       "redisPassword": "REDIS_PASSWORD",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/",
     "environment": { "maxWorkers": "10" }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer executar o job do Dataflow Google Cloud
  • JOB_NAME: um nome de job de sua escolha
  • VERSION: a versão do modelo que você quer usar

    Use estes valores:

  • LOCATION: a região em que você quer implantar o job do Dataflow, por exemplo, us-central1
  • INPUT_SUBSCRIPTION: a assinatura de entrada do Pub/Sub.
  • REDIS_HOST: o host do banco de dados Redis
  • REDIS_PORT: a porta do banco de dados Redis
  • REDIS_PASSWORD: a senha do banco de dados Redis

A seguir