RedisListTrigger لوظائف Azure

RedisListTrigger ينبثق العناصر الجديدة من قائمة ويسطح هذه الإدخالات إلى الدالة.

لمزيد من المعلومات حول مشغلات وروابط Azure Cache for Redis، ملحق Redis لوظائف Azure.

نطاق توفر مشغلات الوظائف

المستوى أساسي قياسي، متميز Enterprise وEnterprise Flash
القوائم ‏‏نعم‬ نعم نعم

هام

مشغلات Redis غير مدعومة حاليا للوظائف التي تعمل في خطة الاستهلاك.

هام

نموذج Node.js v4 للوظائف غير مدعوم حتى الآن من قبل ملحق Azure Cache for Redis. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل مطور Azure Functions Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.

هام

نموذج Python v2 للوظائف غير مدعوم حتى الآن بواسطة ملحق Azure Cache for Redis. لمزيد من التفاصيل حول كيفية عمل نموذج v2، راجع دليل مطور Azure Functions Python.

مثال

هام

بالنسبة لوظائف .NET، يوصى باستخدام نموذج العامل المعزول عبر النموذج قيد المعالجة. للمقارنة بين نماذج العامل قيد المعالجة والنموذج المعزول ، راجع الاختلافات بين نموذج العامل المعزول والنموذج قيد المعالجة ل .NET على Azure Functions.

يستقصي النموذج التالي المفتاح 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);
        }
    }
}

يستقصي النموذج التالي المفتاح listTest في مثيل localhost Redis في redisLocalhost:

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... ‏‏نعم‬
Key مفتاح للقراءة منه. يمكن حل هذا الحقل باستخدام INameResolver. ‏‏نعم‬
PollingIntervalInMs كم مرة يتم فيها استقصاء Redis بالمللي ثانية. اختياري 1000
MessagesPerWorker كم عدد الرسائل التي يجب أن يعالجها كل مثيل دالة. يستخدم لتحديد عدد المثيلات التي يجب أن تقوم الدالة بالتحجيم إليها. اختياري 100
Count عدد الإدخالات التي يجب بوبها من Redis في وقت واحد. تتم معالجة الإدخالات بالتوازي. معتمد فقط على Redis 6.2+ باستخدام الوسيطة COUNT في LPOP و RPOP. اختياري 10
ListPopFromBeginning تحديد ما إذا كان يجب نوافذ الإدخالات من البداية باستخدام LPOP، أو النوافذ المنبثقة من النهاية باستخدام RPOP. اختياري true

تعليقات توضيحية

المعلمة الوصف مطلوبة افتراضي
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. لا

راجع قسم Example للحصول على أمثلة كاملة.

الاستخدام

RedisListTrigger ينبثق العناصر الجديدة من قائمة ويسطح هذه الإدخالات إلى الدالة. يقوم المشغل باستطلاع Redis في فاصل زمني ثابت قابل للتكوين، ويستخدم LPOP RPOP و للإدخالات المنبثقة من القوائم.

النوع ‏‏الوصف
byte[] الرسالة من القناة.
string الرسالة من القناة.
Custom يستخدم المشغل تسلسل Json.NET لتعيين الرسالة من القناة string من إلى نوع مخصص.