RedisStreamTrigger لوظائف Azure

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

المستوى أساسي قياسي، متميز 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.

نموذج التنفيذ ‏‏الوصف
نموذج عامل معزول تعمل تعليمة دالتك البرمجية في عملية عامل .NET منفصلة. استخدم مع الإصدارات المدعومة من .NET و.NET Framework. لمعرفة المزيد، راجع تطوير وظائف معالجة العامل المعزولة .NET.
نموذج قيد المعالجة تعمل تعليمة دالتك البرمجية في نفس العملية مثل عملية مضيف الدالات. يدعم إصدارات الدعم طويل الأجل (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... ‏‏نعم‬
Key مفتاح للقراءة منه. ‏‏نعم‬
PollingIntervalInMs عدد المرات التي يتم فيها استقصاء خادم Redis بالمللي ثانية. اختياري 1000
MessagesPerWorker عدد الرسائل التي يجب على كل عامل وظائف معالجتها. يستخدم لتحديد عدد العمال الذين يجب أن تتدرج الدالة إليه. اختياري 100
Count عدد العناصر التي يجب سحبها من Redis في وقت واحد. اختياري 10
DeleteAfterProcess يشير إلى ما إذا كانت الدالة تحذف إدخالات الدفق بعد المعالجة. اختياري false

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

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

التكوين

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

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

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

الاستخدام

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

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

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

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

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