Azure İşlevleri için Azure Kuyruk depolama tetikleyicisi

Kuyruk depolama tetikleyicisi, iletiler Azure Kuyruk depolama alanına eklendikçe bir işlev çalıştırır.

Tüketim ve Premium planları için Azure Kuyruk depolama ölçeklendirme kararları hedef tabanlı ölçeklendirme yoluyla yapılır. Daha fazla bilgi için bkz . Hedef tabanlı ölçeklendirme.

Önemli

Bu makalede, Node.js programlama modelinin birden çok sürümünü desteklemek için sekmeler kullanılır. Genel kullanıma sunulan v4 modeli, JavaScript ve TypeScript geliştiricileri için daha esnek ve sezgisel bir deneyime sahip olacak şekilde tasarlanmıştır. v4 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri Node.js geliştirici kılavuzuna bakın. v3 ile v4 arasındaki farklar hakkında daha fazla bilgi edinmek için geçiş kılavuzuna bakın.

Azure İşlevleri, Python için iki programlama modelini destekler. Bağlamalarınızı tanımlama şekliniz seçtiğiniz programlama modeline bağlıdır.

Python v2 programlama modeli, doğrudan Python işlev kodunuzda dekoratörleri kullanarak bağlamaları tanımlamanıza olanak tanır. Daha fazla bilgi için bkz . Python geliştirici kılavuzu.

Bu makale her iki programlama modelini de destekler.

Örnek

Kuyrukta yeni bir öğe alındığında işlev başlatmak için kuyruk tetikleyicisini kullanın. Kuyruk iletisi işleve giriş olarak sağlanır.

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. Yalıtılmış çalışan işlemi işlevleri için uzantılar ad alanlarını kullanır Microsoft.Azure.Functions.Worker.Extensions.* .
  • İşlem içi model: İşlevler çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi. Bu modelin bir varyasyonunda, İşlevler öncelikle C# portalı düzenleme için desteklenen C# betiği kullanılarak çalıştırılabilir. İşlem içi işlevlerin uzantıları ad alanlarını kullanır Microsoft.Azure.WebJobs.Extensions.* .

Ö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.

Aşağıdaki örnekte kuyruğu yoklayan input-queue ve bir kuyruk öğesi her işlendiğinde çıkış kuyruğuna birkaç ileti yazan bir C# işlevi gösterilmektedir.

[Function(nameof(QueueFunction))]
[QueueOutput("output-queue")]
public string[] Run([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)
{
    // Use a string array to return more than one message.
    string[] messages = {
        $"Album name = {myQueueItem.Name}",
        $"Album songs = {myQueueItem.Songs.ToString()}"};

    _logger.LogInformation("{msg1},{msg2}", messages[0], messages[1]);

    // Queue Output messages
    return messages;
}

Aşağıdaki Java örneği, kuyruğa yerleştirilen tetiklenen iletiyi günlüğe kaydeden bir depolama kuyruğu myqueuenametetikleyici işlevini gösterir.

@FunctionName("queueprocessor")
public void run(
    @QueueTrigger(name = "msg",
                queueName = "myqueuename",
                connection = "myconnvarname") String message,
    final ExecutionContext context
) {
    context.getLogger().info(message);
}

Aşağıdaki örnekte bir kuyruk tetikleyicisi TypeScript işlevi gösterilmektedir. İşlev kuyruğu yoklar myqueue-items ve bir kuyruk öğesi her işlendiğinde bir günlük yazar.

import { app, InvocationContext } from '@azure/functions';

export async function storageQueueTrigger1(queueItem: unknown, context: InvocationContext): Promise<void> {
    context.log('Storage queue function processed work item:', queueItem);
    context.log('expirationTime =', context.triggerMetadata.expirationTime);
    context.log('insertionTime =', context.triggerMetadata.insertionTime);
    context.log('nextVisibleTime =', context.triggerMetadata.nextVisibleTime);
    context.log('id =', context.triggerMetadata.id);
    context.log('popReceipt =', context.triggerMetadata.popReceipt);
    context.log('dequeueCount =', context.triggerMetadata.dequeueCount);
}

app.storageQueue('storageQueueTrigger1', {
    queueName: 'myqueue-items',
    connection: 'MyStorageConnectionAppSetting',
    handler: storageQueueTrigger1,
});

Kullanım bölümünde açıklanmaktadırqueueItem. İleti meta verileri bölümü , gösterilen diğer tüm değişkenleri açıklar.

Aşağıdaki örnekte kuyruk tetikleyicisi JavaScript işlevi gösterilmektedir. İşlev kuyruğu yoklar myqueue-items ve bir kuyruk öğesi her işlendiğinde bir günlük yazar.

const { app } = require('@azure/functions');

app.storageQueue('storageQueueTrigger1', {
    queueName: 'myqueue-items',
    connection: 'MyStorageConnectionAppSetting',
    handler: (queueItem, context) => {
        context.log('Storage queue function processed work item:', queueItem);
        context.log('expirationTime =', context.triggerMetadata.expirationTime);
        context.log('insertionTime =', context.triggerMetadata.insertionTime);
        context.log('nextVisibleTime =', context.triggerMetadata.nextVisibleTime);
        context.log('id =', context.triggerMetadata.id);
        context.log('popReceipt =', context.triggerMetadata.popReceipt);
        context.log('dequeueCount =', context.triggerMetadata.dequeueCount);
    },
});

Kullanım bölümünde açıklanmaktadırqueueItem. İleti meta verileri bölümü , gösterilen diğer tüm değişkenleri açıklar.

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

Depolama kuyruğu tetikleyicisi, olarak ayarlandığı typequeueTriggerfunction.json dosyasında tanımlanır.

{
  "bindings": [
    {
      "name": "QueueItem",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "messages",
      "connection": "MyStorageConnectionAppSetting"
    }
  ]
}

Run.ps1 dosyasındaki kod, işlevinizdeki kuyruk iletisini okumanızı sağlayan parametresini olarak $QueueItembildirir.

# Input bindings are passed in via param block.
param([string] $QueueItem, $TriggerMetadata)

# Write out the queue message and metadata to the information log.
Write-Host "PowerShell queue trigger function processed work item: $QueueItem"
Write-Host "Queue item expiration time: $($TriggerMetadata.ExpirationTime)"
Write-Host "Queue item insertion time: $($TriggerMetadata.InsertionTime)"
Write-Host "Queue item next visible time: $($TriggerMetadata.NextVisibleTime)"
Write-Host "ID: $($TriggerMetadata.Id)"
Write-Host "Pop receipt: $($TriggerMetadata.PopReceipt)"
Write-Host "Dequeue count: $($TriggerMetadata.DequeueCount)"

Aşağıdaki örnekte, bir işleve tetikleyici aracılığıyla iletilen bir kuyruk iletisinin nasıl okunduğu gösterilmektedir. Örnek, v1 veya v2 Python programlama modelini kullanıp kullanmadığınıza bağlıdır.

import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="QueueFunc")
@app.queue_trigger(arg_name="msg", queue_name="inputqueue",
                   connection="storageAccountConnectionString")  # Queue trigger
@app.queue_output(arg_name="outputQueueItem", queue_name="outqueue",
                 connection="storageAccountConnectionString")  # Queue output binding
def test_function(msg: func.QueueMessage,
                  outputQueueItem: func.Out[str]) -> None:
    logging.info('Python queue trigger function processed a queue item: %s',
                 msg.get_body().decode('utf-8'))
    outputQueueItem.set('hello')

Özellikler

hem işlem içi hem de yalıtılmış çalışan işlemi C# kitaplıkları, işlevi tanımlamak için QueueTriggerAttribute kullanır. Bunun yerine C# betiği, C# betik kılavuzunda açıklandığı gibi bir function.json yapılandırma dosyası kullanır.

Aşağıdaki örnekte gösterildiği gibi, C# sınıf kitaplıklarında özniteliğin oluşturucusunun izlemesi gereken kuyruğun adını alır:

[Function(nameof(QueueFunction))]
[QueueOutput("output-queue")]
public string[] Run([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)

Bu örnekte, özniteliğin kendisinde bağlantı dizesi ayarının ayarlanması da gösterilmektedir.

Ek Açıklamalar

Ek QueueTrigger açıklama işlevi tetikleyen kuyruğa erişmenizi sağlar. Aşağıdaki örnek, kuyruk iletisini parametresi aracılığıyla message işlev için kullanılabilir hale getirir.

package com.function;
import com.microsoft.azure.functions.annotation.*;
import java.util.Queue;
import com.microsoft.azure.functions.*;

public class QueueTriggerDemo {
    @FunctionName("QueueTriggerDemo")
    public void run(
        @QueueTrigger(name = "message", queueName = "messages", connection = "MyStorageConnectionAppSetting") String message,
        final ExecutionContext context
    ) {
        context.getLogger().info("Queue message: " + message);
    }
}
Özellik Açıklama
name İşlev imzasında parametre adını bildirir. İşlev tetiklendiğinde, bu parametrenin değeri kuyruk iletisinin içeriğine sahiptir.
queueName Depolama hesabında kuyruk adını bildirir.
connection Depolama hesabı bağlantı dizesi gösterir.

Dekoratörler

Yalnızca Python v2 programlama modeli için geçerlidir.

Dekoratörler kullanılarak tanımlanan Python v2 işlevleri için, dekoratördeki queue_trigger aşağıdaki özellikler Kuyruk Depolama tetikleyicisini tanımlar:

Özellik Açıklama
arg_name İşlev imzasında parametre adını bildirir. İşlev tetiklendiğinde, bu parametrenin değeri kuyruk iletisinin içeriğine sahiptir.
queue_name Depolama hesabında kuyruk adını bildirir.
connection Depolama hesabı bağlantı dizesi gösterir.

function.json kullanılarak tanımlanan Python işlevleri için Yapılandırma bölümüne bakın.

Yapılandırma

Yalnızca Python v1 programlama modeli için geçerlidir.

Aşağıdaki tabloda, yöntemine geçirilen app.storageQueue() nesnede options ayarlayabileceğiniz özellikler açıklanmaktadır.

Özellik Açıklama
queueName Yoklama kuyruğunun adı.
Bağlantı Azure Kuyruklarına nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Bkz. Bağlan ions.

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

function.json özelliği Açıklama
type olarak ayarlanmalıdır queueTrigger. Bu özellik, Tetikleyiciyi Azure portalında oluşturduğunuzda otomatik olarak ayarlanır.
direction Yalnızca function.json dosyasında. olarak ayarlanmalıdır in. Bu özellik, Tetikleyiciyi Azure portalında oluşturduğunuzda otomatik olarak ayarlanır.
Adı İşlev kodundaki kuyruk öğesi yükünü içeren değişkenin adı.
queueName Yoklama kuyruğunun adı.
Bağlantı Azure Kuyruklarına nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Bkz. Bağlan ions.

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

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

Kullanım

Not

İşlevler base64 kodlanmış bir dize bekler. Kodlama türündeki tüm ayarlamaların (verileri base64 kodlanmış dize olarak hazırlamak için) çağrı hizmetinde uygulanması gerekir.

Kuyruk tetikleyicisinin kullanımı uzantı paketi sürümüne ve işlev uygulamanızda kullanılan C# modalitesine bağlıdır ve bu modlardan biri olabilir:

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 kullanım ayrıntılarını görmek için bir sürüm seçin.

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.Depolama'e başvurmanız gerekir. 5.2.0 veya üzeri kuyruklar ve SDK türü bağlamaları için ortak bağımlılıklar.

QueueTrigger ek açıklaması, işlevi tetikleyen kuyruk iletisine erişmenizi sağlar.

İşlevinizin ilk bağımsız değişkeni olarak kuyruk öğesine erişin. Yük JSON ise, değer bir nesnede seri durumdan çıkarılır.

function.json dosyasında bağlamanın name parametresi tarafından belirlenen adla eşleşen dize parametresi aracılığıyla kuyruk iletisine erişin.

Meta veri

Kuyruk tetikleyicisi çeşitli meta veri özellikleri sağlar. Bu özellikler, diğer bağlamalardaki bağlama ifadelerinin bir parçası olarak veya ileti meta verilerine bu erişimi sağlayan dil çalışanları için kodunuzda parametreler olarak kullanılabilir.

İleti meta veri özellikleri CloudQueueMessage sınıfının üyeleridir.

İleti meta veri özelliklerine uygulamasından context.triggerMetadataerişilebilir.

İleti meta veri özelliklerine geçirilen $TriggerMetadata parametreden erişilebilir.

Özellik Türü Açıklama
QueueTrigger string Kuyruk yükü (geçerli bir dizeyse). Kuyruk iletisi yükü bir dizeyse, QueueTrigger function.json özelliği tarafından adlandırılan değişkenle name aynı değere sahiptir.
DequeueCount long Bu iletinin kaç kez sıralandığı.
ExpirationTime DateTimeOffset İletinin süresinin dolma zamanı.
Id string Kuyruk iletisi kimliği.
InsertionTime DateTimeOffset İletinin kuyruğa eklendiği saat.
NextVisibleTime DateTimeOffset İletinin bir sonraki görünür olacağı saat.
PopReceipt string İletinin açılır makbuzu.

Aşağıdaki ileti meta veri özelliklerine geçirilen bağlama parametresinden (msg önceki örneklerde) erişilebilir.

Özellik Açıklama
body Dize olarak kuyruk yükü.
dequeue_count Bu iletinin kaç kez sıralandığı.
expiration_time İletinin süresinin dolma zamanı.
id Kuyruk iletisi kimliği.
insertion_time İletinin kuyruğa eklendiği saat.
time_next_visible İletinin bir sonraki görünür olacağı saat.
pop_receipt İletinin açılır makbuzu.

Bağlantılar

connection özelliği, uygulamanın Azure Kuyruklarına nasıl bağlanması gerektiğini belirten bir ortam yapılandırması başvurusudur. Şunları belirtebilir:

  • bağlantı dizesi içeren bir uygulama ayarının adı
  • Birden çok uygulama ayarı için paylaşılan ön ekin adı ve birlikte kimlik tabanlı bağlantı tanımlama.

Yapılandırılan değer hem tek bir ayar için tam eşleşme hem de diğer ayarlar için bir ön ek eşleşmesiyse, tam eşleşme kullanılır.

Connection string

bağlantı dizesi almak için Depolama hesabı erişim anahtarlarını yönetme bölümünde gösterilen adımları izleyin.

Bu bağlantı dizesi, bağlama yapılandırmasının özelliği tarafından connection belirtilen değerle eşleşen bir adla bir uygulama ayarında depolanmalıdır.

Uygulama ayarı adı "AzureWebJobs" ile başlıyorsa, adın yalnızca kalanını burada belirtebilirsiniz. Örneğin, "My Depolama" olarak ayarlarsanızconnection, İşlevler çalışma zamanı "AzureWebJobsMy Depolama" adlı bir uygulama ayarı arar. Boş bırakırsanızconnection, İşlevler çalışma zamanı adlı AzureWebJobsStorageuygulama ayarında varsayılan Depolama bağlantı dizesi kullanır.

Kimlik tabanlı bağlantılar

Uzantının 5.x veya üzeri bir sürümünü (non-.NET dil yığınları için paket 3.x veya üzeri) kullanıyorsanız, gizli dizi içeren bir bağlantı dizesi kullanmak yerine uygulamanın bir Microsoft Entra kimliği kullanmasını sağlayabilirsiniz. Kimlik kullanmak için, tetikleyici ve bağlama yapılandırmasındaki özelliğiyle connection eşleyen ortak bir ön ek altında ayarları tanımlarsınız.

"AzureWebJobs Depolama" olarak ayarlanıyorsanız connection bkz. Depolamayı kimlikle barındırmak için Bağlan. Diğer tüm bağlantılar için uzantı aşağıdaki özellikleri gerektirir:

Özellik Ortam değişkeni şablonu Açıklama Örnek değer
Kuyruk Hizmeti URI'si <CONNECTION_NAME_PREFIX>__queueServiceUri1 HTTPS şemasını kullanarak bağlandığınız kuyruk hizmetinin veri düzlemi URI'si. <https:// storage_account_name.queue.core.windows.net>

1<CONNECTION_NAME_PREFIX>__serviceUri diğer ad olarak kullanılabilir. Her iki form da sağlanırsa, queueServiceUri form kullanılır. Genel serviceUri bağlantı yapılandırması bloblar, kuyruklar ve/veya tablolar arasında kullanılacaksa form kullanılamaz.

Bağlantıyı özelleştirmek için diğer özellikler ayarlanabilir. Bkz. Kimlik tabanlı bağlantılar için ortak özellikler.

Azure İşlevleri hizmetinde barındırıldığında, kimlik tabanlı bağlantılar yönetilen kimlik kullanır. Ve özellikleriyle credentialclientID kullanıcı tarafından atanan bir kimlik belirtilse de, sistem tarafından atanan kimlik varsayılan olarak kullanılır. Kullanıcı tarafından atanan kimliği kaynak kimliğiyle yapılandırmanın desteklenmediğini unutmayın. Yerel geliştirme gibi diğer bağlamlarda çalıştırıldığında, bunun yerine geliştirici kimliğiniz kullanılır, ancak bu özelleştirilebilir. Bkz. Kimlik tabanlı bağlantılarla yerel geliştirme.

Kimliğe izin verme

Hangi kimlik kullanılıyorsa, hedeflenen eylemleri gerçekleştirmek için izinlere sahip olmalıdır. Çoğu Azure hizmeti için bu, bu izinleri sağlayan yerleşik veya özel rolleri kullanarak Azure RBAC'de bir rol atamanız gerektiği anlamına gelir.

Önemli

Bazı izinler, tüm bağlamlar için gerekli olmayan hedef hizmet tarafından gösterilebilir. Mümkün olduğunda, kimliğe yalnızca gerekli ayrıcalıkları sağlayarak en az ayrıcalık ilkesine uyun. Örneğin, uygulamanın yalnızca bir veri kaynağından okuyabilmesi gerekiyorsa, yalnızca okuma izni olan bir rol kullanın. Okuma işlemi için aşırı izin olduğundan, bu hizmete yazmaya da izin veren bir rol atamak uygun olmaz. Benzer şekilde, rol atamasının kapsamının yalnızca okunması gereken kaynaklara göre ayarlandığından emin olmak istersiniz.

Çalışma zamanında kuyruğunuza erişim sağlayan bir rol ataması oluşturmanız gerekir. Sahip gibi yönetim rolleri yeterli değildir. Aşağıdaki tabloda, Normal işlemde Kuyruk Depolama uzantısı kullanılırken önerilen yerleşik roller gösterilmektedir. Uygulamanız, yazdığınız koda göre ek izinler gerektirebilir.

Bağlama türü Örnek yerleşik roller
Tetikleyici Kuyruk Veri Okuyucusu Depolama Depolama Kuyruk Veri İletisi İşlemcisi
Çıkış bağlaması Kuyruk Verileri Katkıda Bulunanı Depolama, Kuyruk Veri İletisi Göndereni Depolama

Zehirli iletiler

Kuyruk tetikleyicisi işlevi başarısız olduğunda, Azure İşlevleri ilk deneme dahil olmak üzere belirli bir kuyruk iletisi için işlevi en fazla beş kez yeniden dener. Beş denemenin tümü başarısız olursa, işlev çalışma zamanı originalqueuename-poison> adlı <kuyruğa bir ileti ekler. Zehirli kuyruktan gelen iletileri günlüğe kaydederek veya el ile dikkat gerektiğini belirten bir bildirim göndererek işlemek için bir işlev yazabilirsiniz.

Zehirli iletileri el ile işlemek için kuyruk iletisinin dequeueCount sayısını denetleyin.

Göz atma kilidi

Peek-lock düzeni, depolama hizmeti tarafından sağlanan görünürlük mekaniği kullanılarak kuyruk tetikleyicileri için otomatik olarak gerçekleşir. İletiler tetiklenen işlev tarafından sıralandığında görünmez olarak işaretlenir. Kuyrukla tetiklenen bir işlevin yürütülmesi, kuyruktaki iletide şu sonuçlardan birine sahip olabilir:

  • İşlev yürütmesi başarıyla tamamlanır ve ileti kuyruktan silinir.
  • İşlev yürütme başarısız olur ve İşlevler ana bilgisayarı, host.json dosyasındaki ayara visibilityTimeoutgöre iletinin görünürlüğünü güncelleştirir. Varsayılan görünürlük zaman aşımı sıfırdır; bu da iletinin yeniden işlem için kuyrukta hemen yeniden görüntülendiği anlamına gelir. visibilityTimeout İşlemesi başarısız olan iletilerin yeniden işlenmesini geciktirmek için ayarını kullanın. Bu zaman aşımı ayarı, işlev uygulamasındaki kuyruk tarafından tetiklenen tüm işlevler için geçerlidir.
  • İşlevler ana bilgisayarı işlev yürütme sırasında kilitleniyor. Bu yaygın olmayan olay gerçekleştiğinde, konak işlenen iletiye öğesini visibilityTimeout uygulayamaz. Bunun yerine, ileti depolama hizmeti tarafından ayarlanan varsayılan 10 dakikalık zaman aşımı ile bırakılır. 10 dakika sonra ileti yeniden işlenmesi için kuyrukta yeniden görünür. Bu hizmet tanımlı varsayılan zaman aşımı değiştirilemez.

Yoklama algoritması

Kuyruk tetikleyicisi, boşta kuyruk yoklamasının depolama işlemi maliyetleri üzerindeki etkisini azaltmak için rastgele bir üstel geri alma algoritması uygular.

Algoritma aşağıdaki mantığı kullanır:

  • bir ileti bulunduğunda, çalışma zamanı 100 milisaniye bekler ve sonra başka bir iletiyi denetler.
  • İleti bulunamadığında, yeniden denemeden önce yaklaşık 200 milisaniye bekler.
  • Sonraki başarısız kuyruk iletisi alma girişimlerinin ardından bekleme süresi, varsayılan olarak bir dakika olan en uzun bekleme süresine ulaşana kadar artmaya devam eder.
  • En uzun bekleme süresi, host.json dosyasındaki özelliği aracılığıyla maxPollingInterval yapılandırılabilir.

Yerel geliştirme sırasında maksimum yoklama aralığı varsayılan olarak iki saniyedir.

Not

Tüketim planında işlev uygulamalarını barındırırken faturalamayla ilgili olarak, çalışma zamanı tarafından yoklama için harcanan süre için ücret alınmaz.

Eşzamanlılık

Bekleyen birden çok kuyruk iletisi olduğunda, kuyruk tetikleyicisi bir toplu ileti alır ve bunları işlemek için işlev örneklerini eşzamanlı olarak çağırır. Varsayılan olarak, toplu iş boyutu 16'dır. İşlenen sayı 8'e indiğinde çalışma zamanı başka bir toplu iş alır ve bu iletileri işlemeye başlar. Bu nedenle, bir sanal makinede (VM) işlev başına işlenen en fazla eşzamanlı ileti sayısı 24'tür. Bu sınır, her VM'de kuyrukla tetiklenen her işlev için ayrı ayrı uygulanır. İşlev uygulamanızın ölçeği birden çok VM'ye genişletilirse, her VM tetikleyicileri bekler ve işlevleri çalıştırmayı dener. Örneğin, bir işlev uygulamasının ölçeği 3 VM'ye genişletilirse, kuyrukla tetiklenen bir işlevin varsayılan eşzamanlı örnek sayısı üst sınırı 72'dir.

Toplu iş boyutu ve yeni bir toplu iş alma eşiği host.json dosyasında yapılandırılabilir. Bir işlev uygulamasında kuyrukla tetiklenen işlevler için paralel yürütmeyi en aza indirmek istiyorsanız, toplu iş boyutunu 1 olarak ayarlayabilirsiniz. Bu ayar, işlev uygulamanız tek bir sanal makinede (VM) çalıştığı sürece eşzamanlılığı ortadan kaldırır.

Kuyruk tetikleyicisi, bir işlevin bir kuyruk iletisini aynı anda birden çok kez işlemesini otomatik olarak engeller.

host.json özellikleri

host.json dosyası, kuyruk tetikleyici davranışını denetleen ayarlar içerir. Kullanılabilir ayarlarla ilgili ayrıntılar için host.json ayarları bölümüne bakın.

Sonraki adımlar