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 myqueuename
tetikleyici 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ığı type
queueTrigger
function.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 $QueueItem
bildirir.
# 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ğlantılar. |
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ğlantılar. |
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ına Values
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.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.
QueueTrigger ek açıklaması, işlevi tetikleyen kuyruk iletisine erişmenizi sağlar.
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.
QueueMessage olarak yazılan parametre 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.triggerMetadata
eriş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, "MyStorage" olarak ayarlarsanızconnection
, İşlevler çalışma zamanı "AzureWebJobsMyStorage" adlı bir uygulama ayarı arar. Boş bırakırsanızconnection
, İşlevler çalışma zamanı adlı AzureWebJobsStorage
uygulama 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.
"AzureWebJobsStorage" olarak ayarlanıyorsanız connection
bkz . Kimlikle konak depolamaya bağlanma. 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>__queueServiceUri 1 |
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 credential
clientID
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 | Depolama Kuyruğu Veri Okuyucusu, Depolama Kuyruğu Veri İleti İşlemcisi |
Çıkış bağlaması | Depolama Kuyruğu Veri Katkıda Bulunanı, Depolama Kuyruğu Veri İletisi Göndereni |
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
visibilityTimeout
gö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.