適用於 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 的訊息對應至自定義類型。 |