Bagikan melalui


RedisListTrigger untuk Azure Functions

Memunculkan RedisListTrigger elemen baru dari daftar dan menampilkan entri tersebut ke fungsi .

Untuk informasi selengkapnya tentang pemicu dan pengikatan Azure Cache for Redis, Ekstensi Redis untuk Azure Functions.

Cakupan ketersediaan untuk pemicu fungsi

Tingkat Dasar Standar, Premium Enterprise, Enterprise Flash
Daftar 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.

Sampel berikut melakukan polling kunci 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);
        }
    }
}

Sampel berikut melakukan polling kunci listTest di instans localhost Redis di 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);
    }
}

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": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "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

Dari function.json, berikut adalah data pengikatan:

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

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

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

Berikut adalah filenya __init__.py :

import logging

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

Dari function.json, berikut adalah data pengikatan:

{
    "bindings": [
        {
            "type": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "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. Bidang ini dapat diselesaikan menggunakan INameResolver. Ya
PollingIntervalInMs Seberapa sering untuk polling Redis dalam milidetik. Opsional 1000
MessagesPerWorker Berapa banyak pesan yang harus diproses oleh setiap instans fungsi. Digunakan untuk menentukan berapa banyak instans yang harus diskalakan fungsi. Opsional 100
Count Jumlah entri yang akan dimunculkan dari Redis pada satu waktu. Entri diproses secara paralel. Hanya didukung pada Redis 6.2+ menggunakan COUNT argumen di LPOP dan RPOP. Opsional 10
ListPopFromBeginning Menentukan apakah akan memunculkan entri dari awal menggunakan LPOP, atau untuk memunculkan entri dari akhir menggunakan RPOP. Opsional true

Anotasi

Parameter Deskripsi Wajib diisi Default
name "entri"
connection Nama pengaturan aplikasi yang berisi string koneksi cache, seperti:<cacheName>.redis.cache.windows.net:6380,password... Ya
key Bidang ini dapat diselesaikan menggunakan INameResolver. Ya
pollingIntervalInMs Seberapa sering untuk polling Redis dalam milidetik. Opsional 1000
messagesPerWorker Berapa banyak pesan yang harus diproses oleh setiap instans fungsi. Digunakan untuk menentukan berapa banyak instans yang harus diskalakan fungsi. Opsional 100
count Jumlah entri yang akan dibaca dari Redis pada satu waktu. Ini diproses secara paralel. Opsional 10
listPopFromBeginning Apakah akan menghapus entri aliran setelah fungsi berjalan. Ya true

Konfigurasi

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

Properti function.json Deskripsi Opsional Default
type Nama pemicu. No
listPopFromBeginning Apakah akan menghapus entri aliran setelah fungsi berjalan. Atur ke true. Ya true
connection Nama pengaturan aplikasi yang berisi string koneksi cache, seperti:<cacheName>.redis.cache.windows.net:6380,password... No
key Bidang ini dapat diselesaikan menggunakan INameResolver. No
pollingIntervalInMs Seberapa sering untuk polling Redis dalam milidetik. Ya 1000
messagesPerWorker Berapa banyak pesan yang harus diproses oleh setiap instans fungsi. Digunakan untuk menentukan berapa banyak instans yang harus diskalakan fungsi. Ya 100
count Jumlah entri yang akan dibaca dari cache pada satu waktu. Entri diproses secara paralel. Ya 10
name ? Ya
direction Atur ke in. No

Lihat Bagian contoh untuk contoh lengkapnya.

Penggunaan

Memunculkan RedisListTrigger elemen baru dari daftar dan menampilkan entri tersebut ke fungsi . Pemicu melakukan polling Redis pada interval tetap yang dapat dikonfigurasi, dan menggunakan LPOP dan RPOP untuk memunculkan entri dari daftar.

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.