Pengikatan output RabbitMQ untuk ikhtisar Azure Functions

Catatan

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

Gunakan pengikatan output RabbitMQ untuk mengirim pesan ke 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 @RabbitMQOutput anotasi dari jenis Java RabbitMQ untuk menjelaskan konfigurasi pengikatan output antrean RabbitMQ. Fungsi ini mengirim pesan ke antrean RabbitMQ ketika dipicu oleh TimerTrigger setiap 5 menit.

@FunctionName("RabbitMQOutputExample")
public void run(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */5 * * * *") String timerInfo,
@RabbitMQOutput(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "hello") OutputBinding<String> output,
final ExecutionContext context) {
    output.setValue("Some string");
}

Contoh berikut menunjukkan pengikatan output RabbitMQ dalam file function.json dan fungsi skrip JavaScript yang menggunakan pengikatan. Fungsi ini berbunyi dalam pesan dari pemicu HTTP dan mengeluarkannya ke antrian RabbitMQ.

Berikut data pengikatan dalam file function.json:

{
    "bindings": [
        {
            "type": "httpTrigger",
            "direction": "in",
            "authLevel": "function",
            "name": "input",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

Berikut kode JavaScript:

module.exports = async function (context, input) {
    context.bindings.outputMessage = input.body;
};

Contoh berikut menunjukkan pengikatan output RabbitMQ dalam file function.json dan fungsi skrip Python yang menggunakan pengikatan. Fungsi ini berbunyi dalam pesan dari pemicu HTTP dan mengeluarkannya ke antrian RabbitMQ.

Berikut data pengikatan dalam file function.json:

{
    "scriptFile": "__init__.py",
    "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "$return"
        },​​
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

Dalam _init_.py:

import azure.functions as func

def main(req: func.HttpRequest, outputMessage: func.Out[str]) -> func.HttpResponse:
    input_msg = req.params.get('message')
    outputMessage.set(input_msg)
    return 'OK'

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 RabbitMQOutput memungkinkan Anda membuat fungsi yang berjalan saat pesan RabbitMQ dibuat.

Anotasi tersebut mendukung pengaturan 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.
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.

Lihat contoh pengikatan output untuk detail selengkapnya.

Konfigurasi

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

Properti function.json Deskripsi
jenis Harus diatur ke RabbitMQ.
arah Harus diatur ke out.
nama Nama variabel yang mewakili antrean dalam kode fungsi.
queueName Nama antrean untuk mengirim pesan.
hostName Nama host antrean, seperti 10.26.45.210. Diabaikan saat menggunakan connectStringSetting.
userName Nama pengaturan aplikasi yang berisi nama pengguna untuk mengakses antrean, seperti UserNameSetting: "< UserNameFromSettings >". Diabaikan saat menggunakan connectStringSetting.
kata sandi Nama pengaturan aplikasi yang berisi kata sandi untuk mengakses antrean, seperti UserNameSetting: "< UserNameFromSettings >". 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, bukan melalui pengaturan aplikasi di local.settings.json. Misalnya, ketika Anda telah mengatur connectionStringSetting: "rabbitMQConnection" maka Anda perlu 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 versi runtime Functions, versi paket ekstensi, dan modalitas C# yang digunakan.

Pengikatan RabbitMQ saat ini hanya mendukung jenis string dan objek yang dapat diserialisasikan saat berjalan dalam proses pekerja yang terisolasi.

Untuk contoh lengkapnya, lihat contoh C#.

Gunakan jenis parameter berikut untuk pengikatan output:

  • byte[] - Jika nilai parameter null ketika fungsi keluar, Functions tidak membuat pesan.
  • string - Jika nilai parameter null ketika fungsi keluar, Functions tidak membuat pesan.
  • POJO - Jika nilai parameter tidak diformat sebagai objek Java, kesalahan akan diterima.

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.

Langkah berikutnya