RedisStreamTrigger ل Azure Functions

RedisStreamTrigger يقرأ إدخالات جديدة من دفق ويسطح هذه العناصر إلى الوظيفة.

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

نوع المشغل Azure Managed Redis Azure Cache for Redis
عمليات النقل المستمر ‏‏نعم‬ ‏‏نعم‬

هام

عند استخدام Azure Managed Redis أو مستويات Enterprise Azure Cache for Redis، استخدم المنفذ 10000 بدلا من المنفذ 6380 أو 6379.

هام

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

هام

لم يتم دعم نموذج 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، يوصى باستخدام نموذج العامل عبر نموذج in-process. للمقارنة بين -process ونماذج العامل، راجع الاختلافات بين نموذج العامل ونموذج in-process .NET على Azure Functions.

نموذج التنفيذ ‏‏الوصف
نموذج عامل معزول يتم تشغيل التعليمات البرمجية للدالة في عملية عامل .NET منفصلة. استخدم مع إصدارات المعتمدة من .NET و .NET Framework. لمعرفة المزيد، راجع Guide لتشغيل C# Azure Functions في نموذج العامل المعزول.
نموذج قيد المعالجة تعمل تعليمة دالتك البرمجية في نفس العملية مثل عملية مضيف الدالات. يدعم إصدارات Long Term Support (LTS) فقط من .NET. لمعرفة المزيد، راجع تطوير وظائف مكتبة فئة C# باستخدام Azure Functions.
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 اسم إعداد application الذي يحتوي على connection string ذاكرة التخزين المؤقت، مثل: <cacheName>.redis.cache.windows.net:6380,password... ‏‏نعم‬
Key مفتاح للقراءة منه. ‏‏نعم‬
PollingIntervalInMs عدد المرات التي يتم فيها استقصاء خادم Redis بالمللي ثانية. اختياري 1000
MessagesPerWorker عدد الرسائل التي يجب على كل عامل وظائف معالجتها. يستخدم لتحديد عدد العمال الذين يجب أن تتدرج الدالة إليه. اختياري 100
Count عدد العناصر التي يجب سحبها من Redis في وقت واحد. اختياري 10
DeleteAfterProcess يشير إلى ما إذا كانت الدالة تحذف إدخالات الدفق بعد المعالجة. اختياري false

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

المعلمة ‏‏الوصف مطلوبة افتراضي
name entry ‏‏نعم‬
connection اسم إعداد application الذي يحتوي على connection string ذاكرة التخزين المؤقت، مثل: <cacheName>.redis.cache.windows.net:6380,password... ‏‏نعم‬
key مفتاح للقراءة منه. ‏‏نعم‬
pollingIntervalInMs مدى تكرار استقصاء Redis، بالمللي ثانية. اختياري 1000
messagesPerWorker عدد الرسائل التي يجب على كل عامل وظائف معالجتها. يتم استخدامه لتحديد عدد العمال الذين يجب أن تتدرج الدالة إليه. اختياري 100
count عدد الإدخالات المراد قراءتها من Redis في وقت واحد. تتم معالجة الإدخالات بالتوازي. اختياري 10
deleteAfterProcess ما إذا كنت تريد حذف إدخالات الدفق بعد تشغيل الدالة. اختياري false

التكوين

يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.

خصائص function.json ‏‏الوصف مطلوبة افتراضي
type ‏‏نعم‬
deleteAfterProcess اختياري false
connection اسم إعداد application الذي يحتوي على connection string ذاكرة التخزين المؤقت، مثل: <cacheName>.redis.cache.windows.net:6380,password... ‏‏نعم‬
key المفتاح للقراءة منه. ‏‏نعم‬
pollingIntervalInMs كم مرة يتم فيها استقصاء Redis بالمللي ثانية. اختياري 1000
messagesPerWorker (اختياري) عدد الرسائل التي يجب على كل عامل وظائف معالجتها. يستخدم لتحديد عدد العمال الذين يجب أن تقوم الدالة بتحجيمهم اختياري 100
count عدد الإدخالات المراد قراءتها من Redis في وقت واحد. تتم معالجة هذه بالتوازي. اختياري 10
name ‏‏نعم‬
direction ‏‏نعم‬

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

الاستخدام

تقرأ الدالة RedisStreamTrigger Azure إدخالات جديدة من دفق وتسطح هذه الإدخالات إلى الدالة.

يقوم المشغل باستطلاع Redis في فاصل زمني ثابت قابل للتكوين، ويستخدم XREADGROUP لقراءة العناصر من الدفق.

مجموعة المستهلكين لكافة مثيلات الدالة هي اسم الدالة، أي SimpleStreamTrigger لعينة StreamTrigger.

يستخدم WEBSITE_INSTANCE_ID كل مثيل دالات أو ينشئ GUID عشوائيا لاستخدامه كاسم مستهلك ضمن المجموعة للتأكد من أن مثيلات الدالة التي تم توسيع نطاقها لا تقرأ نفس الرسائل من الدفق.

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