適用於 Azure Functions 的 RedisListTrigger
會 RedisListTrigger
從清單彈出新的元素,並將這些項目呈現至 函式。
如需 Azure Cache for Redis 觸發程式和系結的詳細資訊, 請參閱適用於 Azure Functions 的 Redis 擴充功能。
函式觸發程序的可用性範圍
觸發程式類型 | Azure 受控 Redis | Azure Cache for Redis |
---|---|---|
清單 | Yes | 是 |
重要
使用 Azure 受控 Redis 或 Azure Cache for Redis 的企業層時,請使用埠 10000,而不是埠 6380 或 6379。
重要
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 的同進程模型之間的差異。
下列範例會輪詢密鑰 listTest
.:
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisListTrigger
{
public class SimpleListTrigger
{
private readonly ILogger<SimpleListTrigger> logger;
public SimpleListTrigger(ILogger<SimpleListTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(SimpleListTrigger))]
public void Run(
[RedisListTrigger(Common.connectionStringSetting, "listTest")] string entry)
{
logger.LogInformation(entry);
}
}
}
下列範例會在位於 redisLocalhost
的 localhost Redis 執行個體上輪詢索引鍵 listTest
:
package com.function.RedisListTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class SimpleListTrigger {
@FunctionName("SimpleListTrigger")
public void run(
@RedisListTrigger(
name = "req",
connection = "redisConnectionString",
key = "listTest",
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": "redisListTrigger",
"listPopFromBeginning": true,
"connection": "redisConnectionString",
"key": "listTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "index.js"
}
此範例會 run.ps1
使用相同的檔案,並在檔案中 function.json
系結數據。
以下是檔案 run.ps1
:
param($entry, $TriggerMetadata)
Write-Host $entry
從 function.json
,以下是系結數據:
{
"bindings": [
{
"type": "redisListTrigger",
"listPopFromBeginning": true,
"connection": "redisConnectionString",
"key": "listTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
此範例會 __init__.py
使用相同的檔案,並在檔案中 function.json
系結數據。
Python v1 程式設計模型需要您在函式資料夾中的個別 function.json 檔案中定義系結。 如需詳細資訊,請參閱 Python 開發人員指南。
以下是檔案 __init__.py
:
import logging
def main(entry: str):
logging.info(entry)
從 function.json
,以下是系結數據:
{
"bindings": [
{
"type": "redisListTrigger",
"listPopFromBeginning": true,
"connection": "redisConnectionString",
"key": "listTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
屬性
參數 | 描述: | 是必要欄位 | 預設 |
---|---|---|---|
Connection |
包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... |
Yes | |
Key |
要讀取的索引鍵。 您可使用 INameResolver 來解析此欄位。 |
Yes | |
PollingIntervalInMs |
以毫秒為單位輪詢 Redis 的頻率。 | 選擇性 | 1000 |
MessagesPerWorker |
每個函式實例應該處理的訊息數。 用來判斷函式應調整的實例數目。 | 選擇性 | 100 |
Count |
一次從 Redis 快顯的項目數。 專案會平行處理。 只有在 與中使用 自變數LPOP RPOP 才支援 Redis 6.2+ COUNT 。 |
選擇性 | 10 |
ListPopFromBeginning |
判斷是否從開頭使用 LPOP 來快顯項目,還是使用 RPOP 從結尾快顯專案。 |
選擇性 | true |
註釋
參數 | 描述: | 是必要欄位 | 預設 |
---|---|---|---|
name |
“entry” | ||
connection |
包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... |
Yes | |
key |
您可以使用 INameResolver 解析此欄位。 | Yes | |
pollingIntervalInMs |
以毫秒為單位輪詢 Redis 的頻率。 | 選擇性 | 1000 |
messagesPerWorker |
每個函式實例應該處理的訊息數。 用來判斷函式應調整的實例數目。 | 選擇性 | 100 |
count |
一次從 Redis 讀取的項目數。 這些元素會以平行方式處理。 | 選擇性 | 10 |
listPopFromBeginning |
是否要在函式執行之後刪除數據流專案。 | Yes | true |
組態
下表說明您在 function.json 檔案中設定的繫結設定屬性。
function.json 屬性 | 描述 | 選擇性 | 預設 |
---|---|---|---|
type |
觸發程式的名稱。 | No | |
listPopFromBeginning |
是否要在函式執行之後刪除數據流專案。 設定為 true 。 |
Yes | true |
connection |
包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... |
No | |
key |
您可使用 INameResolver 來解析此欄位。 |
No | |
pollingIntervalInMs |
以毫秒為單位輪詢 Redis 的頻率。 | Yes | 1000 |
messagesPerWorker |
每個函式實例應該處理的訊息數。 用來判斷函式應調整的實例數目。 | Yes | 100 |
count |
一次從快取讀取的項目數。 專案會平行處理。 | Yes | 10 |
name |
? | Yes | |
direction |
設定為 in 。 |
No |
如需完整範例,請參閱範例一節。
使用方式
會 RedisListTrigger
從清單彈出新的元素,並將這些項目呈現至 函式。 觸發程式會以可設定的固定間隔輪詢 Redis,並使用 LPOP
和 RPOP
從清單快顯專案。
類型 | 描述 |
---|---|
byte[] |
來自通道的訊息。 |
string |
來自通道的訊息。 |
Custom |
觸發程式會使用 Json.NET 串行化,將 來自通道 string 的訊息對應至自定義類型。 |