Share via


Azure Functions 用 RedisListTrigger (プレビュー)

RedisListTrigger はリストから新規要素をポップし、それらのエントリを関数に提示します。

Azure Cache for Redis のトリガーとバインドの詳細については、 Azure Functions 用の Redis 拡張機能を参照してください。

関数トリガーの可用性のスコープ

レベル Basic Standard、Premium Enterprise、Enterprise Flash
リスト はい イエス

重要

現在1、Redis トリガーは、従量課金プランで実行されている関数ではサポートされていません。

重要

Functions の Node.js v4 モデルは、Azure Cache for Redis 拡張機能ではまだサポートされていません。 v4 モデルの動作の詳細については、Azure Functions Node.js 開発者ガイドを参照してください。 v3 と v4 の違いの詳細については、移行ガイドを参照してください。

重要

Functions 用 Python v2 モデルは、Azure Cache for Redis 拡張機能ではまだサポートされていません。 v2 モデルの動作の詳細については、Azure Functions Node.js 開発者ガイドを参照してください。

重要

.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"
}

属性

パラメーター Description 必要 Default
Connection キャッシュ 接続文字列を含むアプリケーション設定名前。次に例を示します。<cacheName>.redis.cache.windows.net:6380,password... はい
Key 読み取り元のキー。 このフィールドは、INameResolver を使用して解決できます。 はい
PollingIntervalInMs Redis をポーリングする頻度 (ミリ秒単位)。 省略可能 1000
MessagesPerWorker 各関数インスタンスが処理する必要のあるメッセージの数。 関数がスケーリングする必要のあるインスタンスの数を決めるために使われます。 省略可能 100
Count Redis から一度にポップするエントリの数。 エントリは並列で処理されます。 Redis 6.2 以降で、LPOP および RPOPCOUNT 引数を使う場合にのみサポートされます。 省略可能 10
ListPopFromBeginning LPOP を使用して先頭からエントリをポップするか、RPOP を使用して末尾からエントリをポップするかを決定します。 省略可能 true

注釈

パラメーター Description 必要 Default
name "エントリ"
connection キャッシュ 接続文字列を含むアプリケーション設定名前。次に例を示します。<cacheName>.redis.cache.windows.net:6380,password... はい
key このフィールドは、INameResolver を使用して解決できます。 はい
pollingIntervalInMs Redis をポーリングする頻度 (ミリ秒単位)。 省略可能 1000
messagesPerWorker 各関数インスタンスが処理する必要のあるメッセージの数。 関数がスケーリングする必要のあるインスタンスの数を決めるために使われます。 省略可能 100
count Redis から一度に読み取るエントリの数。 これらは並列で処理されます。 省略可能 10
listPopFromBeginning 関数の実行後にストリーム エントリを削除するかどうか。 はい true

構成

次の表は、function.json ファイルで設定したバインド構成のプロパティを説明しています。

function.json のプロパティ 説明 省略可能 既定値
type トリガーの名前。 いいえ
listPopFromBeginning 関数の実行後にストリーム エントリを削除するかどうか。 true に設定します。 はい true
connection キャッシュ 接続文字列を含むアプリケーション設定名前。次に例を示します。<cacheName>.redis.cache.windows.net:6380,password... いいえ
key このフィールドは、INameResolver を使用して解決できます。 いいえ
pollingIntervalInMs Redis をポーリングする頻度 (ミリ秒単位)。 はい 1000
messagesPerWorker 各関数インスタンスが処理する必要のあるメッセージの数。 関数がスケーリングする必要のあるインスタンスの数を決めるために使われます。 はい 100
count キャッシュから一度に読み取るエントリの数。 エントリは並列で処理されます。 はい 10
name ? はい
direction in に設定します。 いいえ

完全な例については、セクションの例を参照してください。

使用方法

RedisListTrigger はリストから新規要素をポップし、それらのエントリを関数に提示します。 トリガーは、構成可能な固定間隔で Redis をポーリングし、LPOP および RPOP を使用してリストからエントリをポップします。

説明
byte[] チャネルからのメッセージ。
string チャネルからのメッセージ。
Custom トリガーは、Json.NET シリアル化を使用して、チャネルからのメッセージを string からカスタム型にマップします。