Tinjauan pemicu RabbitMQ untuk Azure Functions

Catatan

Pengikatan RabbitMQ hanya didukung penuh pada paket Premium dan Khusus. Konsumsi tidak didukung.

Gunakan pemicu RabbitMQ untuk menanggapi pesan dari antrean RabbitMQ.

Untuk informasi tentang pengaturan dan detail konfigurasi, lihat gambaran umum.

Contoh

Fungsi C# dapat dibuat dengan menggunakan salah satu mode C# berikut:

  • Model pekerja terisolasi: Fungsi C# terkompilasi yang berjalan dalam proses pekerja yang terisolasi dari runtime. Proses pekerja terisolasi diperlukan untuk mendukung fungsi C# yang berjalan pada versi LTS dan non-LTS .NET dan .NET Framework.
  • Model dalam proses: Fungsi C# yang dikompilasi yang berjalan dalam proses yang sama dengan runtime Functions.
  • Skrip C#: Digunakan terutama saat Anda membuat fungsi C# di portal Azure.

Penting

Dukungan akan berakhir untuk model dalam proses pada 10 November 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke model pekerja yang terisolasi untuk dukungan penuh.

[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{
    var logger = context.GetLogger(nameof(RabbitMQFunction));

    logger.LogInformation(item);

    var message = $"Output message created at {DateTime.Now}";
    return message;
}

Fungsi Java berikut menggunakan @RabbitMQTrigger anotasi dari jenis Java RabbitMQ untuk menjelaskan konfigurasi pemicu antrean RabbitMQ. Fungsi ini mengambil pesan yang ditempatkan pada antrean dan menambahkannya ke log.

@FunctionName("RabbitMQTriggerExample")
public void run(
    @RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
    final ExecutionContext context)
{
    context.getLogger().info("Java HTTP trigger processed a request." + input);
}

Contoh berikut menunjukkan pengikatan pemicu RabbitMQ dalam file function.json dan fungsi JavaScript yang menggunakan pengikatan. Fungsi membaca dan mencatat pesan RabbitMQ.

Berikut data pengikatan dalam file function.json:

{​​
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​

Berikut kode JavaScript-nya:

module.exports = async function (context, myQueueItem) {​​
    context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
}​​;

Contoh berikut menunjukkan cara membaca pesan antrean RabbitMQ melalui pemicu.

Definisi pengikatan RabbitMQ ditentukan dalam function.json tempat jenis diatur ke RabbitMQTrigger.

{​​
    "scriptFile": "__init__.py",
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​
import logging
import azure.functions as func

def main(myQueueItem) -> None:
    logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)

Atribut

Pustaka C# proses dalam proses dan terisolasi menggunakan atribut untuk menentukan fungsi . Sebagai gantinya, skrip C# menggunakan file konfigurasi function.json.

Konstruktor atribut membutuhkan parameter berikut:

Parameter Deskripsi
QueueName Nama antrean untuk menerima pesan.
HostName Nama host antrean, seperti 10.26.45.210. Diabaikan saat menggunakan ConnectStringSetting.
UserNameSetting Nama pengaturan aplikasi yang berisi nama pengguna untuk mengakses antrean, seperti UserNameSetting: "%< UserNameFromSettings >%". Diabaikan saat menggunakan ConnectStringSetting.
PasswordSetting Nama pengaturan aplikasi yang berisi kata sandi untuk mengakses antrean, seperti PasswordSetting: "%< PasswordFromSettings >%". Diabaikan saat menggunakan ConnectStringSetting.
ConnectionStringSetting Nama pengaturan aplikasi yang berisi string koneksi antrean pesan RabbitMQ. Pemicu tidak akan berfungsi saat Anda menentukan string koneksi secara langsung melalui pengaturan aplikasi. Misalnya, ketika Anda mengatur ConnectionStringSetting: "rabbitMQConnection", maka Anda memerlukan pengaturan seperti "RabbitMQConnection" : "< ActualConnectionstring >" di local.settings.json dan di aplikasi fungsi.
Port Mendapatkan atau mengatur port yang digunakan. Defaultnya adalah 0, yang menunjuk ke pengaturan port default klien RabbitMQ 5672.

Di pustaka kelas C#, gunakan atribut RabbitMQTrigger.

Berikut adalah RabbitMQTrigger atribut dalam tanda tangan metode untuk pustaka proses pekerja yang terisolasi:

[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{

Anotasi

Anotasi RabbitMQTrigger memungkinkan Anda membuat fungsi yang berjalan saat pesan RabbitMQ dibuat.

Anotasi tersebut mendukung opsi konfigurasi berikut:

Parameter Deskripsi
queueName Nama antrean untuk menerima pesan.
hostName Nama host antrean, seperti 10.26.45.210. Diabaikan saat menggunakan ConnectStringSetting.
userNameSetting Nama pengaturan aplikasi yang berisi nama pengguna untuk mengakses antrean, seperti UserNameSetting: "%< UserNameFromSettings >%". Diabaikan saat menggunakan ConnectStringSetting.
passwordSetting Nama pengaturan aplikasi yang berisi kata sandi untuk mengakses antrean, seperti PasswordSetting: "%< PasswordFromSettings >%". Diabaikan saat menggunakan ConnectStringSetting.
connectionStringSetting Nama pengaturan aplikasi yang berisi string koneksi antrean pesan RabbitMQ. Pemicu tidak akan berfungsi saat Anda menentukan string koneksi secara langsung melalui pengaturan aplikasi. Misalnya, ketika Anda mengatur ConnectionStringSetting: "rabbitMQConnection", maka Anda memerlukan pengaturan seperti "RabbitMQConnection" : "< ActualConnectionstring >" di local.settings.json dan di aplikasi fungsi.
pelabuhan Mendapatkan atau mengatur port yang digunakan. Defaultnya adalah 0, yang menunjuk ke pengaturan port default klien RabbitMQ 5672.

Konfigurasi

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

Properti function.json Deskripsi
jenis Harus diatur ke RabbitMQTrigger.
arah Harus diatur ke in.
nama Nama variabel yang mewakili antrean dalam kode fungsi.
queueName Nama antrean untuk menerima pesan.
hostName Nama host antrean, seperti 10.26.45.210. Diabaikan saat menggunakan connectStringSetting.
userNameSetting Nama pengaturan aplikasi yang berisi nama pengguna untuk mengakses antrean, seperti UserNameSetting: "%< UserNameFromSettings >%". Diabaikan saat menggunakan connectStringSetting.
passwordSetting Nama pengaturan aplikasi yang berisi kata sandi untuk mengakses antrean, seperti PasswordSetting: "%< PasswordFromSettings >%". Diabaikan saat menggunakan connectStringSetting.
connectionStringSetting Nama pengaturan aplikasi yang berisi string koneksi antrean pesan RabbitMQ. Pemicu tidak akan berfungsi saat Anda menentukan string koneksi secara langsung melalui pengaturan aplikasi. Misalnya, ketika Anda mengatur connectionStringSetting: "rabbitMQConnection", maka Anda memerlukan pengaturan seperti "rabbitMQConnection" : "< ActualConnectionstring >" di local.settings.json dan di aplikasi fungsi.
pelabuhan Mendapatkan atau mengatur port yang digunakan. Defaultnya adalah 0, yang menunjuk ke pengaturan port default klien RabbitMQ 5672.

Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values.

Lihat Bagian contoh untuk contoh lengkapnya.

Penggunaan

Jenis parameter yang didukung oleh pemicu RabbitMQ bergantung pada modalitas C# yang digunakan.

Pengikatan RabbitMQ saat ini hanya mendukung string dan jenis objek serial ketika berjalan dalam proses terisolasi.

Untuk contoh lengkapnya, lihat contoh C#.

Lihat anotasi Java.

Pesan antrean tersedia melalui context.bindings.<NAME>, yang mana <NAME> cocok dengan nama yang ditentukan di function.json. Jika payload adalah JSON, nilai serinya dibatalkan menjadi objek.

Lihat contoh Python.

Antrean Dead-letter

Antrean dan pertukaran surat mati tidak dapat dikontrol atau dikonfigurasi dari pemicu RabbitMQ. Untuk menggunakan antrean surat mati, prakonfigurasi antrean yang digunakan oleh pemicu di RabbitMQ. Silakan lihat dokumentasi RabbitMQ.

Pengaturan host.json

Bagian ini menjelaskan pengaturan konfigurasi yang tersedia untuk pengikatan ini dalam versi 2.x dan yang lebih tinggi. Pengaturan dalam file host.json berlaku untuk semua fungsi dalam instans aplikasi fungsi. Contohnya file host.json di bawah ini hanya berisi pengaturan versi 2.x+ untuk pengikatan ini. Untuk informasi selengkapnya tentang pengaturan konfigurasi aplikasi fungsi dalam versi 2.x dan seterusnya, lihat referensi host.json untuk Azure Functions.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Properti Default Deskripsi
prefetchCount 30 Mendapatkan atau mengatur jumlah pesan yang dapat meminta dan di-cache oleh penerima pesan secara bersamaan.
queueName n/a Nama antrean untuk menerima pesan dari.
connectionString n/a String koneksi antrean pesan RabbitMQ. String koneksi secara langsung ditentukan di sini, bukan melalui pengaturan aplikasi.
pelabuhan 0 (diabaikan jika menggunakan connectionString) Mendapatkan atau menyetel Port yang digunakan. Defaultnya adalah 0, yang menunjuk ke pengaturan port default klien: 5672.

Pengujian lokal

Catatan

ConnectionString lebih diutamakan daripada "hostName", "userName", dan "password". Jika semua ini sudah diatur, connectionString akan menimpa dua lainnya.

Jika Anda menguji secara lokal tanpa string koneksi, Anda harus mengatur pengaturan "hostName" dan "userName" dan "kata sandi" jika berlaku di bagian "rabbitMQ" host.json:

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
Properti Default Deskripsi
hostName n/a (diabaikan jika menggunakan connectionString)
Nama host antrean (Misalnya: 10.26.45.210)
userName n/a (diabaikan jika menggunakan connectionString)
Nama untuk mengakses antrean
kata sandi n/a (diabaikan jika menggunakan connectionString)
Kata sandi untuk mengakses antrean

Fungsikan Penskalaan Runtime

Agar pemicu RabbitMQ dapat diskalakan ke beberapa instans, pengaturan Pemantauan Skala Runtime harus diaktifkan.

Di portal, pengaturan ini dapat ditemukan di bawah Pengaturan>runtime Fungsi Konfigurasi untuk aplikasi fungsi Anda.

VNETToggle

Dalam CLI, Anda dapat mengaktifkan Pemantauan Skala Runtime dengan menggunakan perintah berikut:

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

Memantau titik akhir RabbitMQ

Untuk memantau antrean dan pertukaran Anda untuk titik akhir RabbitMQ tertentu:

  • Aktifkan plugin manajemen RabbitMQ
  • Telusuri ke http://{node-hostname}:15672 dan masuk dengan nama pengguna dan kata sandi Anda.

Langkah berikutnya