Template Pub/Sub ke Redis adalah pipeline streaming yang membaca pesan dari langganan Pub/Sub dan menulis payload pesan ke Redis. Kasus penggunaan paling umum dari template ini adalah mengekspor log ke Redis Enterprise untuk analisis log lanjutan berbasis penelusuran secara real time.
- Sebelum menulis ke Redis, Anda dapat menerapkan fungsi yang ditentukan pengguna JavaScript ke payload pesan.
- Setiap pesan yang mengalami kegagalan pemrosesan akan diteruskan ke topik Pub/Sub yang belum diproses untuk pemecahan masalah dan pemrosesan ulang lebih lanjut.
- Untuk keamanan tambahan, aktifkan koneksi SSL saat menyiapkan koneksi endpoint database Anda. Template ini tidak mendukung TLS timbal balik.
Persyaratan pipeline
- Langganan Pub/Sub sumber harus ada sebelum menjalankan pipeline.
- Topik Pub/Sub yang belum diproses harus ada sebelum menjalankan pipeline.
- Endpoint database Redis harus dapat diakses dari subjaringan pekerja Dataflow.
Parameter template
Parameter yang diperlukan
- inputSubscription : Langganan Pub/Sub untuk membaca input, dalam format projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID>. (Contoh: projects/your-project-id/subscriptions/your-subscription-name).
- redisHost : Host database Redis. (Contoh: your.cloud.db.redislabs.com). Default-nya adalah: 127.0.0.1.
- redisPort : Port database Redis. (Contoh: 12345). Setelan defaultnya adalah: 6379.
- redisPassword : Sandi database Redis. Default-nya adalah kosong.
Parameter opsional
- sslEnabled : Parameter SSL database Redis. Defaultnya adalah: false.
- redisSinkType : Sink Redis. Nilai yang didukung adalah
STRING_SINK, HASH_SINK, STREAMS_SINK, and LOGGING_SINK
. (Contoh: STRING_SINK). Setelan defaultnya adalah: STRING_SINK. - connectionTimeout : Waktu tunggu koneksi Redis dalam milidetik. (Contoh: 2000). Setelan defaultnya adalah: 2000.
- ttl : Waktu habis masa berlaku kunci dalam detik.
ttl
default untukHASH_SINK
adalah -1, yang berarti tidak pernah berakhir masa berlakunya. - javascriptTextTransformGcsPath : URI Cloud Storage file .js yang menentukan fungsi yang ditentukan pengguna (UDF) JavaScript yang akan digunakan. (Contoh: gs://my-bucket/my-udfs/my_file.js).
- javascriptTextTransformFunctionName : Nama fungsi yang ditentukan pengguna (UDF) JavaScript yang akan digunakan. Misalnya, jika kode fungsi JavaScript Anda adalah
myTransform(inJson) { /*...do stuff...*/ }
, nama fungsinya adalahmyTransform
. Untuk contoh UDF JavaScript, lihat Contoh UDF (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples). - javascriptTextTransformReloadIntervalMinutes : Menentukan seberapa sering UDF dimuat ulang, dalam hitungan menit. Jika nilainya lebih besar dari 0, Dataflow akan memeriksa file UDF di Cloud Storage secara berkala, dan memuat ulang UDF jika file diubah. Parameter ini memungkinkan Anda mengupdate UDF saat pipeline berjalan, tanpa perlu memulai ulang tugas. Jika nilainya 0, pemuatan ulang UDF akan dinonaktifkan. Nilai defaultnya adalah 0.
Fungsi yang ditentukan pengguna (UDF)
Secara opsional, Anda dapat memperluas template ini dengan menulis fungsi yang ditentukan pengguna (UDF). Template memanggil UDF untuk setiap elemen input. Payload elemen diserialisasi sebagai string JSON. Untuk informasi selengkapnya, lihat Membuat fungsi yang ditentukan pengguna untuk template Dataflow.
Spesifikasi fungsi
UDF memiliki spesifikasi berikut:
- Input: String JSON
- Output: string atau objek JSON yang di-string
Menjalankan template
Konsol
- Buka halaman Create job from template Dataflow. Buka Buat tugas dari template
- Di kolom Nama tugas, masukkan nama tugas yang unik.
- Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region defaultnya adalah
us-central1
.Untuk mengetahui daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.
- Dari menu drop-down Dataflow template, pilih the Pub/Sub to Redis template.
- Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
- Klik Run job.
gcloud
Di shell atau terminal, jalankan template:
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,\
Ganti kode berikut:
JOB_NAME
: nama tugas unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket—gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat dalam folder induk bertanggal masing-masing di bucket—gs://dataflow-templates-REGION_NAME/
REGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
INPUT_SUBSCRIPTION
: langganan input Pub/SubREDIS_HOST
: Host DB RedisREDIS_PORT
: Port DB RedisREDIS_PASSWORD
: Sandi DB Redis
API
Untuk menjalankan template menggunakan REST API, kirim permintaan POST HTTP. Untuk mengetahui informasi selengkapnya tentang
API dan cakupan otorisasinya, lihat
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" } } }
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud tempat Anda ingin menjalankan tugas DataflowJOB_NAME
: nama tugas unik pilihan AndaVERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket—gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat dalam folder induk bertanggal masing-masing di bucket—gs://dataflow-templates-REGION_NAME/
LOCATION
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
INPUT_SUBSCRIPTION
: langganan input Pub/SubREDIS_HOST
: Host DB RedisREDIS_PORT
: Port DB RedisREDIS_PASSWORD
: Sandi DB Redis
Langkah selanjutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.