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)

Contoh PowerShell saat ini tidak tersedia.

Atribut

Baik proses pekerja terisolasi maupun pustaka C# dalam proses digunakan RabbitMQTriggerAttribute untuk menentukan fungsi, di mana properti atribut tertentu bergantung pada versi ekstensi.

Konstruktor atribut menerima parameter ini:

Pengaturan Deskripsi
QueueName Nama antrean untuk menerima pesan.
HostName Parameter ini tidak lagi didukung dan diabaikan. Ini akan dihapus dalam versi mendatang.
ConnectionStringSetting Nama pengaturan aplikasi yang berisi string koneksi untuk server RabbitMQ Anda. Pengaturan ini hanya mengambil nama kunci pengaturan aplikasi, Anda tidak dapat langsung mengatur nilai string koneksi. Untuk informasi selengkapnya, lihat Koneksi.
Setelan NamaPengguna Parameter ini tidak lagi didukung dan diabaikan. Ini akan dihapus dalam versi mendatang.
Pengaturan Kata Sandi Parameter ini tidak lagi didukung dan diabaikan. Ini akan dihapus dalam versi mendatang.
Pelabuhan Mendapatkan atau mengatur port yang digunakan. Defaultnya adalah 0, yang menunjuk ke pengaturan port default klien RabbitMQ 5672.

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.
connectionStringSetting Nama pengaturan aplikasi yang berisi string koneksi untuk server RabbitMQ Anda. Pengaturan ini hanya mengambil nama kunci pengaturan aplikasi, Anda tidak dapat langsung mengatur nilai string koneksi. Untuk informasi selengkapnya, lihat Koneksi.
disableCertificateValidation Nilai Boolean yang dapat diatur untuk true menunjukkan bahwa validasi sertifikat harus dinonaktifkan. Nilai defaultnya adalah false. Tidak disarankan untuk produksi. Tidak berlaku saat SSL dinonaktifkan.

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.
connectionStringSetting Nama pengaturan aplikasi yang berisi string koneksi untuk server RabbitMQ Anda. Pengaturan ini hanya mengambil nama kunci pengaturan aplikasi, Anda tidak dapat langsung mengatur nilai string koneksi. Untuk informasi selengkapnya, lihat Koneksi.
disableCertificateValidation Nilai Boolean yang dapat diatur untuk true menunjukkan bahwa validasi sertifikat harus dinonaktifkan. Nilai defaultnya adalah false. Tidak disarankan untuk produksi. Tidak berlaku saat SSL dinonaktifkan.

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.

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.

Connections

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.

Dimulai dengan ekstensi versi 2.x, hostName, userNameSetting, dan passwordSetting tidak lagi didukung untuk menentukan koneksi ke server RabbitMQ. Anda harus menggunakan connectionStringSetting.

Properti connectionStringSetting hanya dapat menerima nama pasangan kunci-nilai dalam pengaturan aplikasi. Anda tidak dapat langsung mengatur nilai string koneksi dalam pengikatan.

Misalnya, ketika Anda telah mengatur connectionStringSetting ke rabbitMQConnection dalam definisi pengikatan, aplikasi fungsi Anda harus memiliki pengaturan aplikasi bernama rabbitMQConnection yang mengembalikan nilai koneksi seperti amqp://myuser:***@contoso.rabbitmq.example.com:5672 atau referensi Azure Key Vault.

Saat berjalan secara lokal, Anda juga harus memiliki nilai kunci untuk connectionStringSetting ditentukan dalam file local.settings.json Anda. Jika tidak, aplikasi Anda tidak dapat terhubung ke layanan dari komputer lokal Anda dan terjadi kesalahan.

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.

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

Di Azure CLI, Anda dapat mengaktifkan Pemantauan Skala Runtime dengan menggunakan perintah ini:

az resource update -resource-group <RESOURCE_GROUP> -name <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 http://{node-hostname}:15672 dan masuk dengan nama pengguna dan kata sandi Anda.

Artikel terkait