Pub/Sub 到 Redis 範本

「將 Pub/Sub 的內容傳輸到 Redis 範本」是一種串流管道,可讀取 Pub/Sub 訂閱的訊息,並將訊息酬載寫入 Redis。這個範本最常見的用途是將記錄匯出至 Redis Enterprise,以便即時進行進階搜尋式記錄分析。

  • 您可以在寫入 Redis 前,將 JavaScript 使用者定義函式套用至訊息酬載。
  • 系統會將發生處理問題的所有訊息轉送至 Pub/Sub 未處理主題,以便進一步執行疑難排解和重新處理。
  • 為提升安全性,請在設定資料庫端點連線時啟用 SSL 連線。 這個範本不支援相互 TLS。

管道相關規定

  • 執行管道之前,來源 Pub/Sub 訂閱項目必須已經存在。
  • 執行管道之前,Pub/Sub 未處理主題必須已經存在。
  • Redis 資料庫端點必須可從 Dataflow 工作站的子網路存取。

範本參數

必要參數

  • inputSubscription:要讀取輸入內容的 Pub/Sub 訂閱項目。例如:projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID>
  • redisHost:Redis 資料庫主機。例如,your.cloud.db.redislabs.com。預設值為 127.0.0.1。
  • redisPort:Redis 資料庫通訊埠。例如,12345。預設值為 6379。
  • redisPassword:Redis 資料庫密碼。預設值為 empty

選用參數

  • sslEnabled:Redis 資料庫 SSL 參數。預設值為 false。
  • redisSinkType:Redis 接收器。支援的值為 STRING_SINK, HASH_SINK, STREAMS_SINK, and LOGGING_SINK。例如 STRING_SINK。預設值為:STRING_SINK。
  • connectionTimeout:Redis 連線逾時時間 (以毫秒為單位)。例如,2000。預設值為 2000。
  • ttl:金鑰到期時間 (以秒為單位)。HASH_SINKttl 預設值為 -1,表示永不過期。
  • javascriptTextTransformGcsPath:定義要使用的 JavaScript 使用者定義函式 (UDF) 的 .js 檔案 Cloud Storage URI。例如:gs://my-bucket/my-udfs/my_file.js
  • javascriptTextTransformFunctionName:要使用的 JavaScript 使用者定義函式 (UDF) 名稱。舉例來說,如果您的 JavaScript 函式程式碼是 myTransform(inJson) { /*...do stuff...*/ },則函式名稱就是 myTransform。如需 JavaScript UDF 範例,請參閱 UDF 範例 (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples)。
  • javascriptTextTransformReloadIntervalMinutes:指定重新載入 UDF 的頻率 (以分鐘為單位)。如果值大於 0,Dataflow 會定期檢查 Cloud Storage 中的 UDF 檔案,並在檔案經過修改時重新載入 UDF。您可以在管道執行期間更新 UDF,不必重新啟動工作。如果值為 0,系統會停用 UDF 重新載入功能。預設值為 0

使用者定義函式

您可以視需要撰寫使用者定義函式 (UDF) 來擴充這個範本。範本會針對每個輸入元素呼叫 UDF。元素酬載會序列化為 JSON 字串。詳情請參閱「為 Dataflow 範本建立使用者定義函式」。

函式規格

UDF 的規格如下:

  • 輸入:JSON 字串
  • 輸出:字串或字串化 JSON 物件

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。
  2. 前往「依據範本建立工作」
  3. 在「工作名稱」欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

    如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Pub/Sub to Redis template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

gcloud

在殼層或終端機中執行範本:

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,\

更改下列內容:

  • JOB_NAME: 您選擇的不重複工作名稱
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • REGION_NAME: 您要部署 Dataflow 工作的地區,例如 us-central1
  • INPUT_SUBSCRIPTION:Pub/Sub 輸入訂閱項目
  • REDIS_HOST:Redis 資料庫主機
  • REDIS_PORT:Redis 資料庫通訊埠
  • REDIS_PASSWORD:Redis 資料庫密碼

API

如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 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" }
  }
}

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • INPUT_SUBSCRIPTION:Pub/Sub 輸入訂閱項目
  • REDIS_HOST:Redis 資料庫主機
  • REDIS_PORT:Redis 資料庫通訊埠
  • REDIS_PASSWORD:Redis 資料庫密碼

後續步驟