Bagikan melalui


RedisStreamTrigger untuk Azure Functions

Membaca RedisStreamTrigger entri baru dari aliran dan menampilkan elemen-elemen tersebut ke fungsi .

Tingkat Dasar Standar, Premium Enterprise, Enterprise Flash
Aliran Ya Ya Ya

Penting

Pemicu Redis saat ini tidak didukung untuk fungsi yang berjalan dalam paket Konsumsi.

Penting

Model Node.js v4 untuk Functions belum didukung oleh ekstensi Azure Cache for Redis. Untuk detail selengkapnya tentang cara kerja model v4, lihat panduan pengembang Node.js Azure Functions. Untuk mempelajari selengkapnya tentang perbedaan antara v3 dan v4, lihat panduan migrasi.

Penting

Model Python v2 untuk Functions belum didukung oleh ekstensi Azure Cache for Redis. Untuk detail selengkapnya tentang cara kerja model v2, lihat panduan pengembang Azure Functions Python.

Contoh

Penting

Untuk fungsi .NET, menggunakan model pekerja terisolasi direkomendasikan melalui model dalam proses . Untuk perbandingan model pekerja dalam proses dan terisolasi, lihat perbedaan antara model pekerja yang terisolasi dan model dalam proses untuk .NET di Azure Functions.

Model eksekusi Deskripsi
Model pekerja terisolasi Kode fungsi Anda berjalan dalam proses pekerja .NET terpisah. Gunakan dengan versi .NET dan .NET Framework yang didukung. Untuk mempelajari lebih lanjut, lihat Mengembangkan fungsi proses pekerja terisolasi .NET.
Model dalam proses Kode fungsi Anda berjalan dalam proses yang sama dengan proses host Azure Functions. Hanya mendukung versi Dukungan Jangka Panjang (LTS) .NET. Untuk mempelajari lebih lanjut, lihat Mengembangkan fungsi pustaka kelas .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);
    }
}

Sampel ini menggunakan file yang sama index.js , dengan data pengikatan dalam function.json file.

Berikut adalah filenya index.js :

module.exports = async function (context, entry) {
    context.log(entry);
}

Dari function.json, berikut adalah data pengikatan:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "index.js"
}

Sampel ini menggunakan file yang sama run.ps1 , dengan data pengikatan dalam function.json file.

Berikut adalah filenya run.ps1 :

param($entry, $TriggerMetadata)
Write-Host ($entry | ConvertTo-Json)

Dari function.json, berikut adalah data pengikatan:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "run.ps1"
}

Model pemrograman Python v1 mengharuskan Anda menentukan pengikatan dalam file function.json terpisah di folder fungsi. Untuk informasi selengkapnya, lihat panduan pengembang Python.

Sampel ini menggunakan file yang sama __init__.py , dengan data pengikatan dalam function.json file.

Berikut adalah filenya __init__.py :

import logging

def main(entry: str):
    logging.info(entry)

Dari function.json, berikut adalah data pengikatan:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "__init__.py"
}

Atribut

Parameter Deskripsi Wajib diisi Default
Connection Nama pengaturan aplikasi yang berisi string koneksi cache, seperti:<cacheName>.redis.cache.windows.net:6380,password... Ya
Key Kunci untuk dibaca. Ya
PollingIntervalInMs Seberapa sering melakukan polling server Redis dalam milidetik. Opsional 1000
MessagesPerWorker Jumlah pesan yang harus diproses oleh setiap pekerja fungsi. Digunakan untuk menentukan berapa banyak pekerja yang harus diskalakan fungsi. Opsional 100
Count Jumlah elemen yang akan ditarik dari Redis pada satu waktu. Opsional 10
DeleteAfterProcess Menunjukkan apakah fungsi menghapus entri aliran setelah diproses. Opsional false

Anotasi

Parameter Deskripsi Wajib diisi Default
name entry Ya
connection Nama pengaturan aplikasi yang berisi string koneksi cache, seperti:<cacheName>.redis.cache.windows.net:6380,password... Ya
key Kunci untuk dibaca. Ya
pollingIntervalInMs Seberapa sering untuk polling Redis, dalam milidetik. Opsional 1000
messagesPerWorker Jumlah pesan yang harus diproses oleh setiap pekerja fungsi. Ini digunakan untuk menentukan berapa banyak pekerja yang harus diskalakan fungsi. Opsional 100
count Jumlah entri yang akan dibaca dari Redis pada satu waktu. Entri diproses secara paralel. Opsional 10
deleteAfterProcess Apakah akan menghapus entri aliran setelah fungsi berjalan. Opsional false

Konfigurasi

Tabel berikut menjelaskan properti konfigurasi pengikatan yang Anda atur di file function.json.

Properti function.json Deskripsi Wajib diisi Default
type Ya
deleteAfterProcess Opsional false
connection Nama pengaturan aplikasi yang berisi string koneksi cache, seperti:<cacheName>.redis.cache.windows.net:6380,password... Ya
key Kunci untuk dibaca. Ya
pollingIntervalInMs Seberapa sering untuk polling Redis dalam milidetik. Opsional 1000
messagesPerWorker (opsional) Jumlah pesan yang harus diproses oleh setiap pekerja fungsi. Digunakan untuk menentukan berapa banyak pekerja yang harus diskalakan fungsi Opsional 100
count Jumlah entri yang akan dibaca dari Redis pada satu waktu. Ini diproses secara paralel. Opsional 10
name Ya
direction Ya

Lihat Bagian contoh untuk contoh lengkapnya.

Penggunaan

RedisStreamTrigger Azure Function membaca entri baru dari aliran dan menampilkan entri tersebut ke fungsi .

Pemicu melakukan polling Redis pada interval tetap yang dapat dikonfigurasi, dan menggunakan XREADGROUP untuk membaca elemen dari aliran.

Grup konsumen untuk semua instans fungsi adalah nama fungsi, yaitu, SimpleStreamTrigger untuk sampel StreamTrigger.

Setiap instans WEBSITE_INSTANCE_ID fungsi menggunakan atau menghasilkan GUID acak untuk digunakan sebagai nama konsumennya dalam grup untuk memastikan bahwa instans fungsi yang diskalakan tidak membaca pesan yang sama dari aliran.

Tipe Deskripsi
byte[] Pesan dari saluran.
string Pesan dari saluran.
Custom Pemicu menggunakan serialisasi Json.NET untuk memetakan pesan dari saluran dari string ke dalam jenis kustom.