Aracılığıyla paylaş


Azure İşlevleri genel bakış için RabbitMQ tetikleyicisi

Not

RabbitMQ bağlamaları yalnızca Premium ve Ayrılmış planlarda tam olarak desteklenir. Tüketim desteklenmez.

RabbitMQ kuyruğundan gelen iletilere yanıt vermek için RabbitMQ tetikleyicisini kullanın.

Kurulum ve yapılandırma ayrıntıları hakkında bilgi için genel bakışa bakın.

Örnek

C# işlevi aşağıdaki C# modlarından biri kullanılarak oluşturulabilir:

  • Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. LTS ve .NET ve .NET Framework dışındaki sürümlerde çalışan C# işlevlerini desteklemek için yalıtılmış çalışan işlemi gereklidir.
  • İşlem içi model: İşlevler çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi.
  • C# betiği: Öncelikle Azure portalında C# işlevleri oluşturduğunuzda kullanılır.

Önemli

İşlem içi model desteği 10 Kasım 2026'da sona erecektir. Tam destek için uygulamalarınızı yalıtılmış çalışan modeline geçirmenizi kesinlikle öneririz.

[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;
}

Aşağıdaki Java işlevi, Bir RabbitMQ kuyruk tetikleyicisinin yapılandırmasını açıklamak için Java RabbitMQ türlerinden ek açıklamayı kullanır@RabbitMQTrigger. işlevi kuyruğa yerleştirilen iletiyi alır ve günlüklere ekler.

@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);
}

Aşağıdaki örnekte, bir function.json dosyasındaki RabbitMQ tetikleyici bağlaması ve bağlamayı kullanan bir JavaScript işlevi gösterilmektedir. İşlev bir RabbitMQ iletisini okur ve günlüğe kaydeder.

function.json dosyasındaki bağlama verileri aşağıdadır:

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

JavaScript betik kodu aşağıdadır:

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

Aşağıdaki örnekte, bir RabbitMQ kuyruk iletisinin tetikleyici aracılığıyla nasıl okunduğu gösterilmektedir.

RabbitMQ bağlaması, türün olarak ayarlandığı RabbitMQTriggerfunction.json tanımlanır.

{​​
    "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)

Özellikler

hem işlem içi hem de yalıtılmış çalışan işlemi C# kitaplıkları işlevi tanımlamak için özniteliğini kullanır. C# betiği bunun yerine bir function.json yapılandırma dosyası kullanır.

Özniteliğin oluşturucu aşağıdaki parametreleri alır:

Parametre Açıklama
KuyrukAdı İletilerin alındığı kuyruğun adı.
Ana Bilgisayar Adı Kuyruğun ana bilgisayar adı, örneğin 10.26.45.210. kullanılırken ConnectStringSettingyoksayılır.
UserNameSetting Kuyruğa erişecek kullanıcı adını içeren uygulama ayarının adı( gibi UserNameSetting: "%< UserNameFromSettings >%"). kullanılırken ConnectStringSettingyoksayılır.
PasswordSetting Kuyruğa erişmek için parolayı içeren uygulama ayarının adı( gibi PasswordSetting: "%< PasswordFromSettings >%"). kullanılırken ConnectStringSettingyoksayılır.
ConnectionStringSetting RabbitMQ ileti kuyruğu bağlantı dizesi içeren uygulama ayarının adı. Tetikleyici, uygulama ayarı yerine doğrudan bağlantı dizesi belirttiğinizde çalışmaz. Örneğin, öğesini ayarladığınızda ConnectionStringSetting: "rabbitMQConnection"hem local.settings.json hem de işlev uygulamanızda gibi "RabbitMQConnection" : "< ActualConnectionstring >"bir ayara ihtiyacınız vardır.
Bağlantı noktası Kullanılan bağlantı noktasını alır veya ayarlar. Varsayılan değer 0'dır; bu, RabbitMQ istemcisinin varsayılan bağlantı noktası ayarı olan öğesine işaret eder 5672.

C# sınıf kitaplıklarında RabbitMQTrigger özniteliğini kullanın.

Yalıtılmış bir RabbitMQTrigger çalışan işlem kitaplığı için yöntem imzasında bir öznitelik aşağıdadır:

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

Ek Açıklamalar

Ek RabbitMQTrigger açıklama, RabbitMQ iletisi oluşturulduğunda çalışan bir işlev oluşturmanıza olanak tanır.

Ek açıklama aşağıdaki yapılandırma seçeneklerini destekler:

Parametre Açıklama
queueName İletilerin alındığı kuyruğun adı.
hostName Kuyruğun ana bilgisayar adı, örneğin 10.26.45.210. kullanılırken ConnectStringSettingyoksayılır.
userNameSetting Kuyruğa erişecek kullanıcı adını içeren uygulama ayarının adı( gibi UserNameSetting: "%< UserNameFromSettings >%"). kullanılırken ConnectStringSettingyoksayılır.
passwordSetting Kuyruğa erişmek için parolayı içeren uygulama ayarının adı( gibi PasswordSetting: "%< PasswordFromSettings >%"). kullanılırken ConnectStringSettingyoksayılır.
connectionStringSetting RabbitMQ ileti kuyruğu bağlantı dizesi içeren uygulama ayarının adı. Tetikleyici, uygulama ayarı yerine doğrudan bağlantı dizesi belirttiğinizde çalışmaz. Örneğin, öğesini ayarladığınızda ConnectionStringSetting: "rabbitMQConnection"hem local.settings.json hem de işlev uygulamanızda gibi "RabbitMQConnection" : "< ActualConnectionstring >"bir ayara ihtiyacınız vardır.
bağlantı noktası Kullanılan bağlantı noktasını alır veya ayarlar. Varsayılan değer 0'dır; bu, RabbitMQ istemcisinin varsayılan bağlantı noktası ayarı olan öğesine işaret eder 5672.

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Açıklama
type olarak ayarlanmalıdır RabbitMQTrigger.
direction olarak ayarlanmalıdır in.
ad İşlev kodundaki kuyruğu temsil eden değişkenin adı.
queueName İletilerin alındığı kuyruğun adı.
hostName Kuyruğun ana bilgisayar adı, örneğin 10.26.45.210. kullanılırken connectStringSettingyoksayılır.
userNameSetting Kuyruğa erişecek kullanıcı adını içeren uygulama ayarının adı( gibi UserNameSetting: "%< UserNameFromSettings >%"). kullanılırken connectStringSettingyoksayılır.
passwordSetting Kuyruğa erişmek için parolayı içeren uygulama ayarının adı( gibi PasswordSetting: "%< PasswordFromSettings >%"). kullanılırken connectStringSettingyoksayılır.
connectionStringSetting RabbitMQ ileti kuyruğu bağlantı dizesi içeren uygulama ayarının adı. Tetikleyici, uygulama ayarı yerine doğrudan bağlantı dizesi belirttiğinizde çalışmaz. Örneğin, öğesini ayarladığınızda connectionStringSetting: "rabbitMQConnection"hem local.settings.json hem de işlev uygulamanızda gibi "rabbitMQConnection" : "< ActualConnectionstring >"bir ayara ihtiyacınız vardır.
bağlantı noktası Kullanılan bağlantı noktasını alır veya ayarlar. Varsayılan değer 0'dır; bu, RabbitMQ istemcisinin varsayılan bağlantı noktası ayarı olan öğesine işaret eder 5672.

Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasına Values ekleyin.

Tam örnekler için Örnek bölümüne bakın.

Kullanım

RabbitMQ tetikleyicisi tarafından desteklenen parametre türü, kullanılan C# modalitesine bağlıdır.

RabbitMQ bağlamaları şu anda yalıtılmış bir işlemde çalışırken yalnızca dize ve serileştirilebilir nesne türlerini destekler.

Tam bir örnek için bkz. C# örneği.

Java ek açıklamalarına bakın.

Kuyruk iletisi, function.json'de tanımlanan adla eşleşen konum <NAME> aracılığıyla context.bindings.<NAME> kullanılabilir. Yük JSON ise, değer bir nesnede seri durumdan çıkarılır.

Python örneğine bakın.

Teslim edilemeyen ileti kuyrukları

Teslim edilemeyen ileti kuyrukları ve değişimleri RabbitMQ tetikleyicisinden denetlenemez veya yapılandırılamaz. Teslim edilemeyen ileti kuyruklarını kullanmak için RabbitMQ'da tetikleyici tarafından kullanılan kuyruğu önceden yapılandırın. RabbitMQ belgelerine bakın.

host.json ayarları

Bu bölümde, 2.x ve üzeri sürümlerde bu bağlama için kullanılabilen yapılandırma ayarları açıklanmaktadır. host.json dosyasındaki ayarlar, bir işlev uygulaması örneğindeki tüm işlevler için geçerlidir. Aşağıdaki örnek host.json dosyası, bu bağlama için yalnızca sürüm 2.x+ ayarlarını içerir. 2.x ve sonraki sürümlerdeki işlev uygulaması yapılandırma ayarları hakkında daha fazla bilgi için bkz. Azure İşlevleri için host.json başvuru.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Özellik Varsayılan Açıklama
prefetchCount 30 İleti alıcısının aynı anda isteyebileceği ve önbelleğe aldığı ileti sayısını alır veya ayarlar.
queueName yok İleti alınacak kuyruğun adı.
connectionString yok RabbitMQ ileti kuyruğu bağlantı dizesi. bağlantı dizesi burada doğrudan belirtilir ve uygulama ayarıyla belirtilmez.
port 0 (connectionString kullanılıyorsa yoksayılır) Kullanılan Bağlantı Noktasını alır veya ayarlar. Varsayılan değer 0'dır ve bu da rabbitmq istemcisinin varsayılan bağlantı noktası ayarını gösterir: 5672.

Yerel ortamda test etme

Not

connectionString , "hostName", "userName" ve "password" yerine önceliklidir. Bunların hepsi ayarlanmışsa connectionString diğer ikisini geçersiz kılar.

bağlantı dizesi olmadan yerel olarak test ediyorsanız, host.json "rabbitMQ" bölümünde "hostName" ayarını ve varsa "userName" ve "password" ayarlarını yapmalısınız:

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
Özellik Varsayılan Açıklama
hostName yok (connectionString kullanılıyorsa yoksayılır)
Kuyruğun ana bilgisayar adı (Ör. 10.26.45.210)
userName yok (connectionString kullanılıyorsa yoksayılır)
Kuyruğa erişecek ad
password yok (connectionString kullanılıyorsa yoksayılır)
Kuyruğa erişmek için parola

Çalışma Zamanı Ölçeklendirmesini Etkinleştirme

RabbitMQ tetikleyicisinin ölçeği birden çok örneğe genişletebilmesi için Çalışma Zamanı Ölçeği İzleme ayarının etkinleştirilmesi gerekir.

Portalda bu ayar, işlev uygulamanızın Yapılandırma>İşlevi çalışma zamanı ayarları altında bulunabilir.

VNETToggle

CLI'da, aşağıdaki komutu kullanarak Çalışma Zamanı Ölçeği İzleme'yi etkinleştirebilirsiniz:

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

RabbitMQ uç noktasını izleme

Belirli bir RabbitMQ uç noktası için kuyruklarınızı ve değişimlerinizi izlemek için:

  • RabbitMQ yönetim eklentisini etkinleştirme
  • http://{node-hostname}:15672 adresine gidin ve kullanıcı adınız ve parolanızla oturum açın.

Sonraki adımlar