O modelo Pub/Sub para Redis é um pipeline de streaming que lê mensagens de uma subscrição do Pub/Sub e escreve o payload da mensagem no Redis. O exemplo de utilização mais comum deste modelo é exportar registos para o Redis Enterprise para uma análise de registos avançada baseada em pesquisas em tempo real.
- Antes de escrever no Redis, pode aplicar uma função definida pelo utilizador em JavaScript ao payload da mensagem.
- Todas as mensagens que apresentem falhas de processamento são encaminhadas para um tópico não processado do Pub/Sub para resolução de problemas e reprocessamento adicionais.
- Para maior segurança, ative uma ligação SSL quando configurar a ligação do ponto final da base de dados. Este modelo não suporta o TLS mútuo.
Requisitos do pipeline
- A subscrição do Pub/Sub de origem tem de existir antes de executar o pipeline.
- O tópico não processado do Pub/Sub tem de existir antes de executar o pipeline.
- O ponto final da base de dados Redis tem de estar acessível a partir da sub-rede dos trabalhadores do Dataflow.
Parâmetros de modelos
Parâmetros obrigatórios
- inputSubscription: a subscrição do Pub/Sub a partir da qual ler a entrada. Por exemplo,
projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID>
. - redisHost: o anfitrião da base de dados Redis. Por exemplo,
your.cloud.db.redislabs.com
. A predefinição é: 127.0.0.1. - redisPort: a porta da base de dados Redis. Por exemplo,
12345
. A predefinição é: 6379. - redisPassword: a palavra-passe da base de dados Redis. A predefinição é
empty
.
Parâmetros opcionais
- sslEnabled: o parâmetro SSL da base de dados Redis. A predefinição é: false.
- redisSinkType: o destino do Redis. Os valores suportados são
STRING_SINK, HASH_SINK, STREAMS_SINK, and LOGGING_SINK
. Por exemplo,STRING_SINK
. A predefinição é: STRING_SINK. - connectionTimeout: o limite de tempo da ligação Redis em milissegundos. Por exemplo,
2000
. A predefinição é: 2000. - ttl: o tempo de validade da chave em segundos. O valor predefinido de
ttl
paraHASH_SINK
é -1, o que significa que nunca expira. - javascriptTextTransformGcsPath: o URI do Cloud Storage do ficheiro .js que define a função definida pelo utilizador (FDU) JavaScript a usar. Por exemplo,
gs://my-bucket/my-udfs/my_file.js
. - javascriptTextTransformFunctionName: o nome da função definida pelo utilizador (FDU) JavaScript a usar. Por exemplo, se o código da função JavaScript for
myTransform(inJson) { /*...do stuff...*/ }
, o nome da função émyTransform
. Para ver exemplos de UDFs JavaScript, consulte Exemplos de UDFs (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples). - javascriptTextTransformReloadIntervalMinutes: especifica a frequência com que o UDF é recarregado, em minutos. Se o valor for superior a 0, o Dataflow verifica periodicamente o ficheiro UDF no Cloud Storage e recarrega a UDF se o ficheiro for modificado. Este parâmetro permite-lhe atualizar a UDF enquanto o pipeline está em execução, sem ter de reiniciar a tarefa. Se o valor for
0
, o recarregamento das FDU está desativado. O valor predefinido é0
.
Função definida pelo utilizador
Opcionalmente, pode estender este modelo escrevendo uma função definida pelo utilizador (FDU). O modelo chama a FDU para cada elemento de entrada. Os payloads dos elementos são serializados como strings JSON. Para mais informações, consulte o artigo Crie funções definidas pelo utilizador para modelos do Dataflow.
Especificação da função
A FDU tem a seguinte especificação:
- Entrada: cadeia JSON
- Saída: uma string ou um objeto JSON convertido em string
Execute o modelo
Consola
- Aceda à página do fluxo de dados Criar tarefa a partir de um modelo. Aceda a Criar tarefa a partir de modelo
- No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
- Opcional: para Ponto final regional, selecione um valor no menu pendente. A região
predefinida é
us-central1
.Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.
- No menu pendente Modelo do fluxo de dados, selecione the Pub/Sub to Redis template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- Clique em Executar tarefa.
gcloud
Na 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/Cloud_PubSub_to_Redis \ --project=PROJECT_ID \ --region=REGION_NAME \ --parameters \ inputSubscription=INPUT_SUBSCRIPTION,\ redisHost=REDIS_HOST,\ redisPort=REDIS_PORT,\ redisPassword=REDIS_PASSWORD,\
Substitua o seguinte:
JOB_NAME
: um nome de tarefa exclusivo à sua escolhaVERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
INPUT_SUBSCRIPTION
: a subscrição de entrada do Pub/SubREDIS_HOST
: o anfitrião da base de dados RedisREDIS_PORT
: a porta da base de dados RedisREDIS_PASSWORD
: a palavra-passe da base de dados Redis
API
Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos 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/Cloud_PubSub_to_Redis", "environment": { "maxWorkers": "10" } } }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto onde quer executar a tarefa do Dataflow Google CloudJOB_NAME
: um nome de tarefa exclusivo à sua escolhaVERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
LOCATION
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
INPUT_SUBSCRIPTION
: a subscrição de entrada do Pub/SubREDIS_HOST
: o anfitrião da base de dados RedisREDIS_PORT
: a porta da base de dados RedisREDIS_PASSWORD
: a palavra-passe da base de dados Redis
O que se segue?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.