Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Membaca RedisStreamTrigger
entri baru dari aliran dan menampilkan elemen-elemen tersebut ke fungsi .
Cakupan ketersediaan untuk pemicu fungsi
Jenis Pemicu | Azure Managed Redis | Azure Cache untuk Redis |
---|---|---|
Aliran | Ya | Ya |
Penting
Saat menggunakan Azure Managed Redis atau tingkat Enterprise Azure Cache for Redis, gunakan port 10000 daripada port 6380 atau 6379.
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.
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 selengkapnya, lihat Panduan untuk menjalankan C# Azure Functions dalam model pekerja yang terisolasi. |
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 C# dengan menggunakan 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);
}
}
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 | Bawaan |
---|---|---|---|
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
Pengaturan | Deskripsi | Wajib diisi | Bawaan |
---|---|---|---|
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 | Bawaan |
---|---|---|---|
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. |