Bagikan melalui


Tinjauan pemicu RabbitMQ untuk Azure Functions

Gunakan pemicu RabbitMQ untuk menanggapi pesan dari antrean RabbitMQ.

Catatan

Pengikatan RabbitMQ hanya didukung penuh pada paket Elastic Premium dan Dedicated (App Service ). Paket Konsumsi dan Konsumsi Fleksibel belum didukung.

Pengikatan RabbitMQ tidak didukung oleh runtime Azure Functions v1.x.

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

Contoh

Anda dapat membuat fungsi C# 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 dukungan jangka panjang (LTS) dan non-LTS untuk .NET dan .NET Framework.
  • Model dalam proses: Fungsi C# terkompilasi yang berjalan dalam proses yang sama dengan runtime Azure 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:

Pengaturan Deskripsi
QueueName Nama antrean untuk menerima pesan.
HostName Nama host antrean, seperti 10.26.45.210. Diabaikan saat menggunakan ConnectStringSetting.
Setelan NamaPengguna Nama pengaturan aplikasi yang berisi nama pengguna untuk mengakses antrean, seperti UserNameSetting: "%< UserNameFromSettings >%". Diabaikan saat menggunakan ConnectStringSetting.
Pengaturan Kata Sandi 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 di "RabbitMQConnection" : "< ActualConnectionstring >" dan di aplikasi fungsi.
Pelabuhan 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:

Pengaturan 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.
pengaturan kata sandi 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 di "RabbitMQConnection" : "< ActualConnectionstring >" 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.
pengaturan kata sandi 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 di "rabbitMQConnection" : "< ActualConnectionstring >" 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

Penting

Pengikatan RabbitMQ tidak mendukung autentikasi Microsoft Entra dan identitas terkelola. Anda dapat menggunakan Azure Key Vault untuk mengelola string koneksi RabbitMQ Anda secara terpusat. Untuk mempelajari selengkapnya, lihat Mengelola Koneksi.

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 di versi 2.x dan yang lebih baru. Pengaturan dalam file host.json berlaku untuk semua fungsi dalam instans aplikasi fungsi. Untuk informasi selengkapnya tentang pengaturan konfigurasi aplikasi fungsi, lihat referensihost.json untuk Azure Functions.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Properti Bawaan 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.
stringKoneksi 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 Bawaan Deskripsi
nama host 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