Il modello da Pub/Sub a Redis è una pipeline di flusso che legge i messaggi da una sottoscrizione Pub/Sub e scrive il payload dei messaggi su Redis. Il caso d'uso più comune di questo modello è l'esportazione dei log in Redis Enterprise per l'analisi avanzata dei log basata sulla ricerca in tempo reale.
- Prima di scrivere su Redis, puoi applicare una funzione JavaScript definita dall'utente al payload del messaggio.
- Tutti i messaggi che presentano errori di elaborazione vengono inoltrati a un argomento Pub/Sub non elaborato per ulteriore risoluzione dei problemi e rielaborazione.
- Per maggiore sicurezza, abilita una connessione SSL durante la configurazione della connessione dell'endpoint del database. Questo modello non supporta TLS reciprocamente.
Requisiti della pipeline
- La sottoscrizione Pub/Sub di origine deve esistere prima dell'esecuzione della pipeline.
- L'argomento non elaborato di Pub/Sub deve esistere prima dell'esecuzione della pipeline.
- L'endpoint del database Redis deve essere accessibile dalla subnet dei worker Dataflow.
Parametri del modello
Parametri obbligatori
- inputSubscription: la sottoscrizione Pub/Sub da cui leggere l'input, nel formato projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID> (ad esempio, projects/your-project-id/subscriptions/your-subscription-name).
- redisHost : l'host del database Redis. ad esempio your.cloud.db.redislabs.com. Il valore predefinito è 127.0.0.1.
- redisPort : la porta del database Redis. Esempio: 12345. Il valore predefinito è 6379.
- redisPassword : la password del database Redis. Il campo predefinito è vuoto.
Parametri facoltativi
- sslEnabled : il parametro SSL del database Redis. Il valore predefinito è false.
- redisSinkType : il sink Redis. I valori supportati sono
STRING_SINK, HASH_SINK, STREAMS_SINK, and LOGGING_SINK
. (Esempio: STRING_SINK). Il valore predefinito è: STRING_SINK. - connectionTimeout : il timeout della connessione Redis in millisecondi. (Esempio: 2000). Il valore predefinito è 2000.
- ttl : la scadenza della chiave in secondi. Il valore predefinito di
ttl
perHASH_SINK
è -1, il che significa che non scade mai. - javascriptTextTransformGcsPath : l'URI Cloud Storage del file .js che definisce la funzione definita dall'utente (UDF) JavaScript da utilizzare. Esempio: gs://my-bucket/my-udfs/my_file.js.
- javascriptTextTransformFunctionName : il nome della funzione definita dall'utente (UDF) JavaScript da utilizzare. Ad esempio, se il codice della funzione JavaScript è
myTransform(inJson) { /*...do stuff...*/ }
, il nome della funzione èmyTransform
. Per esempi di funzioni JavaScript definite dall'utente, consulta gli esempi di funzioni definite dall'utente (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples). - javascriptTextTransformReloadIntervalMinutes : specifica la frequenza di ricarica della funzione definita dall'utente, in minuti. Se il valore è maggiore di 0, Dataflow controlla periodicamente il file delle funzioni definite dall'utente in Cloud Storage e ricarica la funzione definita dall'utente se il file viene modificato. Questo parametro consente di aggiornare la funzione definita dall'utente mentre la pipeline è in esecuzione, senza dover riavviare il job. Se il valore è 0, il ricaricamento della funzione definita dall'utente viene disabilitato. Il valore predefinito è 0.
Funzione definita dall'utente
Facoltativamente, puoi estendere questo modello scrivendo una funzione definita dall'utente dall'utente. Il modello chiama la funzione definita dall'utente per ogni elemento di input. I payload degli elementi sono serializzati come stringhe JSON. Per ulteriori informazioni, consulta Creare funzioni definite dall'utente per i modelli Dataflow.
Specifica della funzione
La funzione definita dall'utente ha la seguente specifica:
- Input: stringa JSON
- Output: una stringa o un oggetto JSON con stringhe
Esegui il modello
Console
- Vai alla pagina Crea job da modello di Dataflow. Vai a Crea job da modello
- Nel campo Nome job, inserisci un nome univoco per il job.
- (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione predefinita è
us-central1
.Per un elenco di regioni in cui è possibile eseguire un job Dataflow, consulta Località di Dataflow.
- Dal menu a discesa Modello Dataflow, seleziona the Pub/Sub to Redis template.
- Inserisci i valori parametro negli appositi campi.
- Fai clic su Esegui job.
gcloud
Nella shell o nel terminale, esegui il modello:
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,\
Sostituisci quanto segue:
JOB_NAME
: un nome job univoco a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella padre non con data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che è possibile trovare nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
INPUT_SUBSCRIPTION
: la sottoscrizione di input Pub/SubREDIS_HOST
: l'host del database RedisREDIS_PORT
: la porta database RedisREDIS_PASSWORD
: la password del database Redis
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per maggiori informazioni
sull'API e sui relativi ambiti di autorizzazione, consulta
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" } } }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME
: un nome job univoco a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella padre non con data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che è possibile trovare nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates-REGION_NAME/
LOCATION
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
INPUT_SUBSCRIPTION
: la sottoscrizione di input Pub/SubREDIS_HOST
: l'host del database RedisREDIS_PORT
: la porta database RedisREDIS_PASSWORD
: la password del database Redis
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.