Azure İşlevleri genel bakış için Azure Kuyruk depolama tetikleyicisi ve bağlamaları

Azure İşlevleri, yeni Azure Kuyruk depolama iletileri oluşturulduğunda çalışabilir ve bir işlev içinde kuyruk iletileri yazabilir.

Eylem Tür
Kuyruk depolama verileri değiştikçe işlev çalıştırma Tetikleyici
Kuyruk depolama iletileri yazma Çıkış bağlaması

Uzantıyı yükleme

Yüklediğiniz NuGet uzantısı, işlev uygulamanızda kullandığınız C# moduna bağlıdır:

İşlevler yalıtılmış bir C# çalışan işleminde yürütülür. Daha fazla bilgi edinmek için bkz. Yalıtılmış çalışan işleminde C# Azure İşlevleri çalıştırma kılavuzu.

Uzantının işlevselliği, uzantı sürümüne bağlı olarak değişir:

Bu sürüm gizli dizi yerine kimlik kullanarak bağlanma özelliğini tanıtır. İşlev uygulamalarınızı yönetilen kimliklerle yapılandırma öğreticisi için kimlik tabanlı bağlantılarla işlev uygulaması oluşturma öğreticisine bakın.

Bu sürüm, Azure.Storage.Queues'tan türlere bağlamanıza olanak tanır.

NuGet paketi, sürüm 5.x'i yükleyerek uzantıyı projenize ekleyin.

.NET CLI'yi kullanma:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues --version 5.0.0

Not

Azure Blobları, Azure Kuyrukları ve Azure Tabloları artık ayrı uzantılar kullanır ve tek tek başvurulur. Örneğin, .NET yalıtılmış işlem uygulamanızdaki üç hizmetin de tetikleyicilerini ve bağlamalarını kullanmak için projenize aşağıdaki paketleri eklemeniz gerekir:

Daha önce uzantılar birlikte Microsoft.Azure.Functions.Worker.Extensions.Storage, sürüm 4.x olarak gönderilmektedir. Aynı paket, yalnızca bloblar ve kuyruklar için bölünmüş paketlere başvuran 5.x sürümüne de sahiptir. Bu nedenle, paket başvurularınızı eski sürümlerden yükseltirken yeni Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet paketine de başvurmanız gerekebilir. Ayrıca, bu yeni bölünmüş paketlere başvururken, aynı bağlamaların iki tanımından çakışmalara neden olacağı için birleşik depolama paketinin eski bir sürümüne başvurmadığınızdan emin olun.

Paket yükleme

Blob depolama bağlaması, host.json proje dosyanızda belirtilen bir uzantı paketinin parçasıdır. Bağlamanın sürümünü değiştirmek için veya paketler henüz yüklü değilse bu paketi değiştirmeniz gerekebilir. Daha fazla bilgi edinmek için bkz . uzantı paketi.

Bu sürüm gizli dizi yerine kimlik kullanarak bağlanma özelliğini tanıtır. İşlev uygulamalarınızı yönetilen kimliklerle yapılandırma öğreticisi için kimlik tabanlı bağlantılarla işlev uygulaması oluşturma öğreticisine bakın.

Dosyanıza host.json aşağıdaki kodu ekleyerek veya değiştirerek v3 önizleme uzantısı paketinden uzantının bu sürümünü ekleyebilirsiniz:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

Daha fazla bilgi edinmek için bkz . Uzantılarınızı güncelleştirme.

Bağlama türleri

.NET için desteklenen bağlama türleri, aşağıdakilerden biri olabilecek uzantı sürümüne ve C# yürütme moduna bağlıdır:

Yalıtılmış çalışan işlem sınıfı kitaplığı derlenmiş C# işlevi çalışma zamanından yalıtılmış bir işlemde çalışır.

Modun ve sürümün bağlama türü ayrıntılarını görmek için bir sürüm seçin.

Yalıtılmış çalışan işlemi, aşağıdaki tablolara göre parametre türlerini destekler. Azure.Storage.Queues'tan türlere bağlama desteği önizleme aşamasındadır.

Kuyruk tetikleyicisi

Kuyruk tetikleyicisi aşağıdaki türlere bağlanabilir:

Type Açıklama
string dize olarak ileti içeriği. İleti basit bir metin olduğunda kullan...
byte[] İletinin baytları.
JSON serileştirilebilir türler Bir kuyruk iletisi JSON verileri içerdiğinde İşlevler, JSON verilerinin seri durumdan çıkarılarak düz eski bir CLR nesnesi (POCO) türüne dönüştürülmeye çalışılır.
QueueMessage1 İleti.
BinaryData1 İletinin baytları.

1 Bu türleri kullanmak için Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues 5.2.0 veya sonraki sürümlerine ve SDK türü bağlamaları için ortak bağımlılıklara başvurmanız gerekir.

Kuyruk çıkış bağlaması

İşlevin tek bir ileti yazmasını istediğinizde, kuyruk çıkış bağlaması aşağıdaki türlere bağlanabilir:

Type Açıklama
string dize olarak ileti içeriği. İleti basit bir metin olduğunda kullanın.
byte[] İletinin baytları.
JSON serileştirilebilir türler JSON iletisinin içeriğini temsil eden nesne. İşlevler, düz eski bir CLR nesnesi (POCO) türünü JSON verilerine seri hale getirmeye çalışır.

İşlevin birden çok ileti yazmasını istediğinizde, kuyruk çıkış bağlaması aşağıdaki türlere bağlanabilir:

Type Açıklama
T[] burada T tek ileti türlerinden biridir Birden çok ileti için içerik içeren bir dizi. Her girdi bir iletiyi temsil eder.

Diğer çıkış senaryoları için, doğrudan Azure.Storage.Queues'tan başka türlerle queueclient oluşturun ve kullanın. Azure SDK'dan bir istemci türü oluşturmak için bağımlılık ekleme kullanma örneği için bkz . Azure istemcilerini kaydetme.

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.

Not

İşlevler 1.x'teki host.json başvurusu için bkz. Azure İşlevleri 1.x için host.json başvuru.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
Özellik Varsayılan Açıklama
maxPollingInterval 00:01:00 Kuyruk yoklamaları arasındaki maksimum aralık. En düşük aralık 00:00:00,100 (100 ms) şeklindedir. Aralıklar'a maxPollingIntervalkadar artar. varsayılan değeri maxPollingInterval 00:01:00 'dır (1 dk). maxPollingInterval 00:00:00.100'den (100 ms) küçük olmamalıdır. İşlevler 2.x ve sonraki sürümlerde veri türü bir TimeSpan'dir. İşlevler 1.x'te milisaniye cinsindendir.
visibilityTimeout 00:00:00 bir iletinin işlenmesi başarısız olduğunda yeniden denemeler arasındaki zaman aralığı.
batchSize 16 İşlevler çalışma zamanının aynı anda alıp paralel olarak işlediği kuyruk iletilerinin sayısı. İşlenen sayı öğesine indiğinde newBatchThresholdçalışma zamanı başka bir toplu iş alır ve bu iletileri işlemeye başlar. Bu nedenle, işlev başına işlenen en fazla eşzamanlı ileti sayısı artı newBatchThresholdolurbatchSize. Bu sınır, kuyrukla tetiklenen her işlev için ayrı ayrı uygulanır.

Bir kuyruğa alınan iletiler için paralel yürütmeyi önlemek istiyorsanız, 1 olarak ayarlayabilirsiniz batchSize . Ancak bu ayar, işlev uygulamanız yalnızca tek bir sanal makinede (VM) çalıştığı sürece eşzamanlılığı ortadan kaldırır. İşlev uygulamasının ölçeği birden çok VM'ye genişletilirse, her VM kuyrukla tetiklenen her işlevin bir örneğini çalıştırabilir.

batchSize Maksimum değer 32'dir.
maxDequeueCount 5 İletiyi zehirli kuyruğa taşımadan önce işlemeyi deneme sayısı.
newBatchThreshold N*batchSize/2 Eşzamanlı olarak işlenen ileti sayısı bu sayıya inerse çalışma zamanı başka bir toplu iş alır.

N , App Service veya Premium Planlarda çalışırken kullanılabilen vCPU sayısını temsil eder. Değeri Tüketim Planı'na yöneliktir 1 .
messageEncoding base64 Bu ayar yalnızca uzantı paketi sürüm 5.0.0 ve üzeri sürümlerde kullanılabilir. İletiler için kodlama biçimini temsil eder. Geçerli değerler: base64 ve none.

Sonraki adımlar