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 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. |