分享方式:


適用於 Azure Functions 的 RedisStreamTrigger

RedisStreamTrigger 從數據流讀取新的專案,並將這些項目呈現至 函式。

基本 標準,進階 Enterprise,Enterprise Flash
資料流 Yes .是

重要

Redis 觸發程式目前不支援在取用方案中執行的函式。

重要

Azure Cache for Redis 擴充功能尚不支援適用於 Functions 的 Node.js v4 模型。 如需 v4 模型運作方式的更多詳細資料,請參閱 Azure Functions Node.js 開發人員指南。 若要深入了解 v3 與 v4 之間的差異,請參閱移轉指南

重要

Azure Cache for Redis 擴充功能尚不支援適用於 Functions 的 Python v2 模型。 如需 v2 模型運作方式的更多詳細資料,請參閱 Azure Functions Python 開發人員指南

範例

重要

針對 .NET 函式,建議針對進程內模型使用隔離的背景工作模型。 如需同進程隔離背景工作模型的比較,請參閱隔離的背景工作模型與 Azure Functions 上 .NET 的同進程模型之間的差異

執行模型 描述
隔離式背景工作模型 您的函數程式碼在個別的 .NET 背景工作處理序中執行。 搭配支援的 .NET 和 .NET Framework 版本使用。 若要深入了解,請參閱開發 .NET 隔離式背景工作處理序函數
同處理序模型 您的函數程式碼執行的處理序與 Functions 主機處理序相同。 僅支援長期支援 (LTS) 的 .NET 版本。 若要深入了解,請參閱開發 .NET 類別庫函數
using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisStreamTrigger
{
    internal class SimpleStreamTrigger
    {
        private readonly ILogger<SimpleStreamTrigger> logger;

        public SimpleStreamTrigger(ILogger<SimpleStreamTrigger> logger)
        {
            this.logger = logger;
        }

        [Function(nameof(SimpleStreamTrigger))]
        public void Run(
            [RedisStreamTrigger(Common.connectionStringSetting, "streamKey")] string entry)
        {
            logger.LogInformation(entry);
        }
    }
}

package com.function.RedisStreamTrigger;

import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;

public class SimpleStreamTrigger {
    @FunctionName("SimpleStreamTrigger")
    public void run(
            @RedisStreamTrigger(
                name = "req",
                connection = "redisConnectionString",
                key = "streamTest",
                pollingIntervalInMs = 1000,
                maxBatchSize = 1)
                String message,
            final ExecutionContext context) {
            context.getLogger().info(message);
    }
}

此範例會 index.js 使用相同的檔案,並在檔案中 function.json 系結數據。

以下是檔案 index.js

module.exports = async function (context, entry) {
    context.log(entry);
}

function.json,以下是系結數據:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "index.js"
}

此範例會 run.ps1 使用相同的檔案,並在檔案中 function.json 系結數據。

以下是檔案 run.ps1

param($entry, $TriggerMetadata)
Write-Host ($entry | ConvertTo-Json)

function.json,以下是系結數據:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "run.ps1"
}

Python v1 程式設計模型需要您在函式資料夾中的個別 function.json 檔案中定義系結。 如需詳細資訊,請參閱 Python 開發人員指南

此範例會 __init__.py 使用相同的檔案,並在檔案中 function.json 系結數據。

以下是檔案 __init__.py

import logging

def main(entry: str):
    logging.info(entry)

function.json,以下是系結數據:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "__init__.py"
}

屬性

參數 描述 是必要欄位 預設
Connection 包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... Yes
Key 要讀取的索引鍵。 Yes
PollingIntervalInMs 以毫秒為單位輪詢 Redis 伺服器的頻率。 選擇性 1000
MessagesPerWorker 每個函式背景工作角色應該處理的訊息數目。 用來判斷函式應該調整為多少個背景工作角色。 選擇性 100
Count 一次從 Redis 提取的項目數目。 選擇性 10
DeleteAfterProcess 指出函式是否在處理之後刪除數據流專案。 選擇性 false

註釋

參數 描述: 是必要欄位 預設
name entry Yes
connection 包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... Yes
key 要讀取的索引鍵。 Yes
pollingIntervalInMs 以毫秒為單位輪詢 Redis 的頻率。 選擇性 1000
messagesPerWorker 每個函式背景工作角色應該處理的訊息數目。 它用來判斷函式應該調整為多少背景工作角色。 選擇性 100
count 一次從 Redis 讀取的項目數。 專案會平行處理。 選擇性 10
deleteAfterProcess 是否要在函式執行之後刪除數據流專案。 選擇性 false

組態

下表說明您在 function.json 檔案中設定的繫結設定屬性。

function.json屬性 描述 是必要欄位 預設
type Yes
deleteAfterProcess 選擇性 false
connection 包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... Yes
key 要讀取的索引鍵。 Yes
pollingIntervalInMs 以毫秒為單位輪詢 Redis 的頻率。 選擇性 1000
messagesPerWorker (選擇性)每個函式背景工作角色應該處理的訊息數目。 用來判斷函式應調整的背景工作角色數量 選擇性 100
count 一次從 Redis 讀取的項目數。 這些元素會以平行方式處理。 選擇性 10
name Yes
direction Yes

如需完整範例,請參閱範例一節。

使用方式

RedisStreamTrigger Azure 函式會從數據流讀取新的專案,並將這些專案呈現至函式。

觸發程序會以可設定的固定間隔輪詢 Redis,並使用 XREADGROUP 讀取串流中的元素。

函式所有實例的取用者群組是 StreamTrigger 範例的函 SimpleStreamTrigger 式名稱。

每個函式實例都會使用 WEBSITE_INSTANCE_ID 或 產生隨機 GUID,以作為群組內的取用者名稱,以確保函式的相應放大實例不會從數據流讀取相同的訊息。

類型 描述
byte[] 來自通道的訊息。
string 來自通道的訊息。
Custom 觸發程式會使用 Json.NET 串行化,將 來自通道 string 的訊息對應至自定義類型。