Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Service Bus kuyruğundan veya konu başlığından gelen iletilere yanıt vermek için Service Bus tetikleyicisini kullanın. Uzantı sürümü 3.1.0'dan başlayarak oturum etkin bir kuyrukta veya konu başlığında tetikleyebilirsiniz.
Kurulum ve yapılandırma ayrıntıları hakkında bilgi için genel bakışa bakın.
Tüketim ve Premium planları için Service Bus ölçeklendirme kararları hedef tabanlı ölçeklendirmeye göre 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ızı sağlar. Daha fazla bilgi için bkz. Python geliştirici kılavuzu.
Bu makale her iki programlama modelini de destekler.
Ö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 LTS dışı sürümler .NET ve .NET Framework üzerinde ç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
Microsoft.Azure.Functions.Worker.Extensions.*ad alanlarını kullanır. -
İş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ı
Microsoft.Azure.WebJobs.Extensions.*ad alanlarını kullanı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.
Bu kod, öğesini ILoggertanımlar ve başlatır:
private readonly ILogger<ServiceBusReceivedMessageFunctions> _logger;
public ServiceBusReceivedMessageFunctions(ILogger<ServiceBusReceivedMessageFunctions> logger)
{
_logger = logger;
}
Bu örnekte, tek bir Service Bus kuyruğu iletisi alan ve bunu günlüklere yazan C# işlevi gösterilir:
[Function(nameof(ServiceBusReceivedMessageFunction))]
[ServiceBusOutput("outputQueue", Connection = "ServiceBusConnection")]
public string ServiceBusReceivedMessageFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] ServiceBusReceivedMessage message)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
var outputMessage = $"Output message created at {DateTime.Now}";
return outputMessage;
}
Bu örnekte, tek bir toplu işte birden çok Service Bus kuyruk iletisi alan ve her birini günlüklere yazan bir C# işlevi gösterilmektedir:
[Function(nameof(ServiceBusReceivedMessageBatchFunction))]
public void ServiceBusReceivedMessageBatchFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection", IsBatched = true)] ServiceBusReceivedMessage[] messages)
{
foreach (ServiceBusReceivedMessage message in messages)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
}
}
Bu örnekte, birden çok Service Bus kuyruk iletisi alan, günlüklere yazan ve ardından iletiyi tamamlandı olarak tamamlayan C# işlevi gösterilir:
[Function(nameof(ServiceBusMessageActionsFunction))]
public async Task ServiceBusMessageActionsFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection", AutoCompleteMessages = false)]
ServiceBusReceivedMessage message,
ServiceBusMessageActions messageActions)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
// Complete the message
await messageActions.CompleteMessageAsync(message);
}
Aşağıdaki Java işlevi, Service Bus kuyruğu tetikleyicisinin yapılandırmasını açıklamak için @ServiceBusQueueTrigger ek açıklamasını kullanır. işlevi kuyruğa yerleştirilen iletiyi alır ve günlüklere ekler.
@FunctionName("sbprocessor")
public void serviceBusProcess(
@ServiceBusQueueTrigger(name = "msg",
queueName = "myqueuename",
connection = "myconnvarname") String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
Java işlevleri, bir Service Bus konusuna ileti eklendiğinde de tetiklenebilir. Aşağıdaki örnek, tetikleyici yapılandırmasını açıklamak için ek açıklamayı kullanır @ServiceBusTopicTrigger .
@FunctionName("sbtopicprocessor")
public void run(
@ServiceBusTopicTrigger(
name = "message",
topicName = "mytopicname",
subscriptionName = "mysubscription",
connection = "ServiceBusConnection"
) String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
Bu örnekte, Service Bus tetikleyicisi tarafından sağlanan ServiceBusReceivedMessage elde ServiceBusMessageContext SDK türü kullanılmaktadır:
import '@azure/functions-extensions-servicebus'; // Ensure the Service Bus extension is imported
import { app, type InvocationContext } from '@azure/functions';
import { type ServiceBusMessageContext, messageBodyAsJson } from '@azure/functions-extensions-servicebus';
// This sample uses sdkBinding = true with manual message completion.
// With v0.4.0, message.body is returned as a raw Buffer instead of auto-parsed object.
export async function serviceBusQueueTrigger(
serviceBusMessageContext: ServiceBusMessageContext,
context: InvocationContext
): Promise<void> {
const message = serviceBusMessageContext.messages[0];
// v0.4.0: message.body is a Buffer — use messageBodyAsJson<T>() from the extension for one-line parsing
const bodyData = messageBodyAsJson(message);
context.log('Parsed message body:', bodyData);
// Get current retry count from custom properties, default to 0
const currentRetryCount = message.applicationProperties?.retryCnt
? parseInt(message.applicationProperties.retryCnt as string)
: 0;
context.log(`Current retry count: ${currentRetryCount}`);
if (currentRetryCount >= 3) {
// After 3 retries, complete the message to remove it from the queue
context.log(`Maximum retry count (3) reached. Completing message to prevent infinite loop.`);
await serviceBusMessageContext.actions.complete(message);
context.log('Message completed after maximum retries');
} else {
// Abandon with updated retry count
const newRetryCount = currentRetryCount + 1;
const propertiesToModify = {
retryCnt: newRetryCount.toString(),
lastRetryTime: new Date().toISOString(),
errorMessage: 'Processing failed',
};
context.log(`Abandoning message with retry count: ${newRetryCount}`);
await serviceBusMessageContext.actions.abandon(message, propertiesToModify);
}
context.log('triggerMetadata: ', context.triggerMetadata);
}
app.serviceBusQueue('serviceBusQueueTrigger1', {
connection: 'ServiceBusConnection',
queueName: 'testqueue',
sdkBinding: true,
SDK türlerini kullanan başka bir örnek için exponential geri alma stratejisi örneğine bakın.
Daha fazla bilgi için Node.js başvuru makalesindeki SDK türleri bölümüne bakın.
Aşağıdaki örnekte Service Bus tetikleyicisi TypeScript işlevi gösterilmektedir. İşlev message metadata okur ve Service Bus kuyruk iletisini günlüğe kaydeder.
import { app, InvocationContext } from '@azure/functions';
export async function serviceBusQueueTrigger1(message: unknown, context: InvocationContext): Promise<void> {
context.log('Service bus queue function processed message:', message);
context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
context.log('DeliveryCount =', context.triggerMetadata.deliveryCount);
context.log('MessageId =', context.triggerMetadata.messageId);
}
app.serviceBusQueue('serviceBusQueueTrigger1', {
connection: 'MyServiceBusConnection',
queueName: 'testqueue',
handler: serviceBusQueueTrigger1,
});
Aşağıdaki örnekte Service Bus tetikleyicisi JavaScript işlevi gösterilmektedir. İşlev message metadata okur ve Service Bus kuyruk iletisini günlüğe kaydeder.
const { app } = require('@azure/functions');
app.serviceBusQueue('serviceBusQueueTrigger1', {
connection: 'MyServiceBusConnection',
queueName: 'testqueue',
handler: (message, context) => {
context.log('Service bus queue function processed message:', message);
context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
context.log('DeliveryCount =', context.triggerMetadata.deliveryCount);
context.log('MessageId =', context.triggerMetadata.messageId);
},
});
Aşağıdaki örnekte, function.json dosyasında Service Bus tetikleyici bağlaması ve bağlamayı kullanan bir PowerShell işlevi gösterilmektedir.
function.json dosyasındaki bağlama verileri aşağıdadır:
{
"bindings": [
{
"name": "mySbMsg",
"type": "serviceBusTrigger",
"direction": "in",
"topicName": "mytopic",
"subscriptionName": "mysubscription",
"connection": "AzureServiceBusConnectionString"
}
]
}
Service Bus iletisi gönderildiğinde çalışan işlev aşağıdadır.
param([string] $mySbMsg, $TriggerMetadata)
Write-Host "PowerShell ServiceBus queue trigger function processed message: $mySbMsg"
Bu örnek, Service Bus tetikleyicisi tarafından sağlanan temel ServiceBusReceivedMessage nesnesine doğrudan erişmek için SDK türlerini kullanır:
import logging
import azure.functions as func
import azurefunctions.extensions.bindings.servicebus as servicebus
app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)
@app.service_bus_queue_trigger(arg_name="receivedmessage",
queue_name="QUEUE_NAME",
connection="SERVICEBUS_CONNECTION")
def servicebus_queue_trigger(receivedmessage: servicebus.ServiceBusReceivedMessage):
logging.info("Python ServiceBus queue trigger processed message.")
logging.info("Receiving: %s\n"
"Body: %s\n"
"Enqueued time: %s\n"
"Lock Token: %s\n"
"Message ID: %s\n"
"Sequence number: %s\n",
receivedmessage,
receivedmessage.body,
receivedmessage.enqueued_time_utc,
receivedmessage.lock_token,
receivedmessage.message_id,
receivedmessage.sequence_number)
işlevi, türün ServiceBusReceivedMessage çeşitli özelliklerini okur ve bunları günlüğe kaydeder.
Service Bus SDK türlerini kullanan diğer örnekler için ServiceBusReceivedMessage örneklerine bakın. İşlev uygulamanıza SDK türü bağlamaları ekleme hakkında adım adım öğretici için Service Bus Sample için
Not
Bilinen sınırlamalar şunlardır:
-
messageözelliği desteklenmiyor. - Batch ileti desteği, İşlevler çalışma zamanının 4.1039 veya sonraki bir sürümünü gerektirir.
Desteklenen diğer SDK türü bağlamaları da dahil olmak üzere daha fazla bilgi edinmek için bkz. SDK türü bağlamaları.
Bu örnekte, tetikleyici aracılığıyla bir Service Bus kuyruk iletisinin nasıl okunduğu gösterilmektedir. Örnek, v1 veya v2 Python programlama modelini mi kullandığınıza bağlıdır.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="ServiceBusQueueTrigger1")
@app.service_bus_queue_trigger(arg_name="msg",
queue_name="<QUEUE_NAME>",
connection="<CONNECTION_SETTING>")
def test_function(msg: func.ServiceBusMessage):
logging.info('Python ServiceBus queue trigger processed message: %s',
msg.get_body().decode('utf-8'))
Aşağıdaki örnekte, tetikleyici aracılığıyla bir Service Bus kuyruğu konusunun nasıl okunduğu gösterilmektedir.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="ServiceBusTopicTrigger1")
@app.service_bus_topic_trigger(arg_name="message",
topic_name="TOPIC_NAME",
connection="CONNECTION_SETTING",
subscription_name="SUBSCRIPTION_NAME")
def test_function(message: func.ServiceBusMessage):
message_body = message.get_body().decode("utf-8")
logging.info("Python ServiceBus topic trigger processed message.")
logging.info("Message Body: " + message_body)
Özellikler
hem in-process hem de isolated worker process C# kitaplıkları işlev tetikleyicisini tanımlamak için ServiceBusTriggerAttribute özniteliğini 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 tabloda, bu tetikleyici özniteliğini kullanarak ayarlayabileceğiniz özellikler açıklanmaktadır:
| Özellik | Açıklama |
|---|---|
| KuyrukAdı | İzlenecek kuyruğun adı. Bir konu için değil, yalnızca kuyruk izleniyorsa ayarlayın. |
| TopicName | İzlenecek konunun adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın. |
| SubscriptionName | İzlenecek aboneliğin adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın. |
| Bağlantı | Service Bus nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Bkz. Bağlantılar. |
| IsBatched | İletiler toplu olarak teslim edilir. Dizi veya koleksiyon türü gerektirir. |
| IsSessionsEnabled |
trueoturum kullanan bir kuyruğa veya aboneliğe bağlanıyorsanız.
false aksi takdirde, varsayılan değerdir. |
| AutoCompleteMessages |
true başarılı bir çağrıdan sonra tetikleyicinin iletiyi otomatik olarak tamamlaması gerekiyorsa.
falseaksi takdirde, örneğin kodda ileti düzenlemeyi işlerken. Açıkça ayarlanmadıysa, davranış içindeki autoCompleteMessagesyapılandırmayıhost.json temel alır. |
Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues ekleyin.
Dekoratörler
Dekoratör kullanılarak tanımlanan Python v2 işlevleri için, service_bus_queue_trigger üzerinde aşağıdaki özellikler:
| Özellik | Açıklama |
|---|---|
arg_name |
İşlev kodundaki kuyruk veya konu iletisini temsil eden değişkenin adı. |
queue_name |
İzlenecek kuyruğun adı. Bir konu için değil, yalnızca kuyruk izleniyorsa ayarlayın. |
connection |
Service Bus nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Bkz. Bağlantılar. |
function.json kullanılarak tanımlanan Python işlevleri için Configuration bölümüne bakın.
Ek Açıklamalar
ServiceBusQueueTrigger ek açıklaması, Service Bus kuyruk iletisi oluşturulduğunda çalışan bir işlev oluşturmanıza olanak tanır. Kullanılabilir yapılandırma seçenekleri aşağıdaki özellikleri içerir:
| Özellik | Açıklama |
|---|---|
| ad | İşlev kodundaki kuyruk veya konu iletisini temsil eden değişkenin adı. |
| queueName | İzlenecek kuyruğun adı. Bir konu için değil, yalnızca kuyruk izleniyorsa ayarlayın. |
| topicName | İzlenecek konunun adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın. |
| abonelikAdı | İzlenecek aboneliğin adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın. |
| bağlantı | Service Bus nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Bkz. Bağlantılar. |
Ek ServiceBusTopicTrigger açıklama, işlevi tetikleyen verileri hedeflemek için bir konu ve abonelik atamanızı sağlar.
Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues ekleyin.
Daha fazla ayrıntı için tetikleyici örneğine bakın.
Yapılandırma
Aşağıdaki tabloda veya options yöntemlerine app.serviceBusQueue() geçirilen nesnede app.serviceBusTopic() ayarlayabileceğiniz özellikler açıklanmaktadır.
| Özellik | Açıklama |
|---|---|
| queueName | İzlenecek kuyruğun adı. Bir konu için değil, yalnızca kuyruk izleniyorsa ayarlayın. |
| topicName | İzlenecek konunun adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın. |
| abonelikAdı | İzlenecek aboneliğin adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın. |
| bağlantı | Service Bus nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Bkz. Bağlantılar. |
| accessRights | bağlantı dizesi erişim hakları. Kullanılabilir değerler ve managedeğerleridirlisten. Varsayılan değer, 'nin Yönet iznine sahip olduğunu manage gösteren değeridirconnection.
Manage iznine sahip olmayan bir bağlantı dizesi kullanıyorsanız, accessRights değerini "dinleme" olarak ayarlayın. Aksi takdirde, İşlevler çalışma zamanı yönetme hakları gerektiren işlemleri gerçekleştirmeye çalışmayabilir. Azure İşlevleri sürüm 2.x ve üzeri sürümlerde, Service Bus SDK'sının en son sürümü işlemleri yönetmeyi desteklemediğinden bu özellik kullanılamaz. |
| isSessionsEnabled |
trueoturum kullanan bir kuyruğa veya aboneliğe bağlanıyorsanız.
false aksi takdirde, varsayılan değerdir. |
| otomatik tamamlama | C# olmayan işlevler için olmalıdır true ; bu, tetikleyicinin işlendikten sonra otomatik olarak tamamlandı olarak çağrı yapması veya işlev kodunun el ile çağrılarının tamamlanması gerektiği anlamına gelir.olarak trueayarlandığında, işlev yürütmesi başarıyla tamamlanırsa tetikleyici iletiyi otomatik olarak tamamlar ve aksi takdirde iletiyi bırakır.İşlevdeki özel durumlar arka planda çalışma zamanı çağrısına abandonAsync neden olur. Özel durum oluşmazsa arka completeAsync planda çağrılır. Bu özellik yalnızca Azure İşlevleri 2.x ve üzeri sürümlerde kullanılabilir. |
Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues ekleyin.
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 |
|---|---|
| türü | olarak ayarlanmalıdır serviceBusTrigger. Bu özellik, tetikleyiciyi Azure portalında oluşturduğunuzda otomatik olarak ayarlanır. |
| yön | "in" olarak ayarlanmalıdır. Bu özellik, tetikleyiciyi Azure portalında oluşturduğunuzda otomatik olarak ayarlanır. |
| ad | İşlev kodundaki kuyruk veya konu iletisini temsil eden değişkenin adı. |
| queueName | İzlenecek kuyruğun adı. Bir konu için değil, yalnızca kuyruk izleniyorsa ayarlayın. |
| topicName | İzlenecek konunun adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın. |
| abonelikAdı | İzlenecek aboneliğin adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın. |
| bağlantı | Service Bus nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Bkz. Bağlantılar. |
| accessRights | bağlantı dizesi erişim hakları. Kullanılabilir değerler ve managedeğerleridirlisten. Varsayılan değer, 'nin Yönet iznine sahip olduğunu manage gösteren değeridirconnection.
Manage iznine sahip olmayan bir bağlantı dizesi kullanıyorsanız, accessRights değerini "dinleme" olarak ayarlayın. Aksi takdirde, İşlevler çalışma zamanı yönetme hakları gerektiren işlemleri gerçekleştirmeye çalışmayabilir. Azure İşlevleri sürüm 2.x ve üzeri sürümlerde, Service Bus SDK'sının en son sürümü işlemleri yönetmeyi desteklemediğinden bu özellik kullanılamaz. |
| isSessionsEnabled |
trueoturum kullanan bir kuyruğa veya aboneliğe bağlanıyorsanız.
false aksi takdirde, varsayılan değerdir. |
| otomatik tamamlama | C# olmayan işlevler için olmalıdır true ; bu, tetikleyicinin işlendikten sonra otomatik olarak tamamlandı olarak çağrı yapması veya işlev kodunun el ile çağrılarının tamamlanması gerektiği anlamına gelir.olarak trueayarlandığında, işlev yürütmesi başarıyla tamamlanırsa tetikleyici iletiyi otomatik olarak tamamlar ve aksi takdirde iletiyi bırakır.İşlevdeki özel durumlar arka planda çalışma zamanı çağrısına abandonAsync neden olur. Özel durum oluşmazsa arka completeAsync planda çağrılır. Bu özellik yalnızca Azure İşlevleri 2.x ve üzeri sürümlerde kullanılabilir. |
Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues ekleyin.
Tam örnekler için Örnek bölümüne bakın.
Kullanım
Aşağıdaki parametre türleri tüm C# modaliteleri ve uzantı sürümleri tarafından desteklenir:
| Türü | Açıklama |
|---|---|
| System.String | İleti basit bir metin olduğunda kullanın. |
| bayt[] | İkili veri iletileri için kullanın. |
| Nesne | bir ileti JSON içerdiğinde, İşlevler JSON verilerini bilinen düz eski CLR nesne türüne seri durumdan çıkarmaya çalışır. |
Mesajlaşmaya özgü parametre türleri ek ileti meta verileri içerir. Service Bus tetikleyicisi tarafından desteklenen belirli türler İşlevler çalışma zamanı sürümüne, uzantı paketi sürümüne ve kullanılan C# modalitesine bağlıdır.
İşlevin tek bir iletiyi işlemesini istediğinizde, Service Bus tetikleyicisi aşağıdaki türlere bağlanabilir:
| Türü | Açıklama |
|---|---|
string |
İleti bir dize olarak. İleti basit bir metin olduğunda kullanın. |
byte[] |
İletinin baytları. |
| JSON serileştirilebilir türler | Bir olay 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. |
| ServiceBusReceivedMessage1 | İleti nesnesi.ServiceBusReceivedMessage bağlarken, isteğe bağlı olarak message settlement eylemleri gerçekleştirmek için ServiceBusMessageActions1,2 türünde bir parametre de ekleyebilirsiniz. |
İşlevin bir grup iletiyi işlemesini istediğinizde, Service Bus tetikleyicisi aşağıdaki türlere bağlanabilir:
| Türü | Açıklama |
|---|---|
T[] burada T tek ileti türlerinden biridir |
Toplu işlemden olay dizisi. Her girdi bir olayı temsil eder.ServiceBusReceivedMessage[] bağlarken, isteğe bağlı olarak message settlement eylemleri gerçekleştirmek için ServiceBusMessageActions1,2 türünde bir parametre de ekleyebilirsiniz. |
2 kullanırken tetikleyici özniteliğininServiceBusMessageActionsAutoCompleteMessages. Bu, çalışma zamanının başarılı bir işlev çağrısından sonra iletileri tamamlamaya çalışmasını engeller.
Connection özelliği tanımlanmadığında İşlevler, Service Bus bağlantı dizesi için varsayılan ad olan AzureWebJobsServiceBus adlı bir uygulama ayarını arar. Kullanılacak Service Bus bağlantı dizesi içeren bir uygulama ayarının adını belirtmek için Connection özelliğini de ayarlayabilirsiniz.
Gelen Service Bus iletisi bir ServiceBusQueueMessage veya ServiceBusTopicMessage parametresi aracılığıyla kullanılabilir.
Service Bus örneği, function.json dosyasının ad özelliğinde yapılandırılan parametre aracılığıyla kullanılabilir.
Kuyruk iletisi, olarak func.ServiceBusMessageyazılan bir parametre aracılığıyla işlev tarafından kullanılabilir. Service Bus iletisi işleve dize veya JSON nesnesi olarak geçirilir.
İşlevler, Azure Service Bus için Python SDK türü bağlamalarını da destekler ve bu da aşağıdaki temel SDK türlerini kullanarak verilerle çalışmanızı sağlar:
Önemli
Python'da Service Bus SDK türleri desteği Önizleme aşamasındadır ve yalnızca Python v2 programlama modeli için desteklenir. Daha fazla bilgi için bkz. Python
Tam bir örnek için örnekler bölümüne bakın.
Bağlantılar
connection özelliği, uygulamanın Service Bus nasıl bağlandığını belirten ortam yapılandırmasına başvurur. Şunları belirtebilir:
- bağlantı dizesi içeren bir uygulama ayarının adı.
- Yönetilen kimlik bağlantısını birlikte tanımlayan birden çok uygulama ayarı için paylaşılan ön ekin adı.
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.
Tavsiye
Daha iyi güvenlik için bağlantı dizeleri yerine yönetilen kimlik bağlantılarını kullanın. Bağlantı dizeleri kullanıma sunulan kimlik bilgilerini içerirken yönetilen kimlikler gizli dizileri yönetme gereksinimini ortadan kaldırır.
Uzantının version 5.x veya üzerini kullanıyorsanız gizli diziyle bağlantı dizesi kullanmak yerine uygulamanın Microsoft Entra kimliği kullanmasını sağlayabilirsiniz. Yönetilen kimlikleri kullanmak için tetikleyici ve bağlama yapılandırmasındaki özelliğiyle connection eşleyen ortak bir ön ek altında ayarları tanımlayın.
Bu modda, uzantı aşağıdaki uygulama ayarlarını gerektirir:
| Şablon tabanlı ayar | Açıklama | Kimlik türü |
|---|---|---|
<CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace |
Tam Service Bus ad alanı. | Sistem tarafından atanan veya kullanıcı tarafından atanan |
<CONNECTION_NAME_PREFIX>__credential |
olarak ayarlanmalıdır managedidentity. |
Kullanıcı tarafından atanan |
<CONNECTION_NAME_PREFIX>__clientId |
Kullanıcıya atanmış yönetilen kimliğin istemci ID'si. | Kullanıcı tarafından atanan |
ile değiştirdiğiniz <CONNECTION_NAME_PREFIX> değer, bağlama uzantısı tarafından bağlantı ayarının adı olarak değerlendirilir.
Örneğin, bağlama yapılandırmanız kullanıcı tarafından atanan yönetilen kimlikle belirtiyorsa connection = "ServiceBusConnection" aşağıdaki uygulama ayarlarını yapılandırabilirsiniz:
{
"ServiceBusConnection__fullyQualifiedNamespace": "myservicebus.servicebus.windows.net",
"ServiceBusConnection__credential": "managedidentity",
"ServiceBusConnection__clientId": "00000000-0000-0000-0000-000000000000"
}
Tavsiye
Birden çok kaynakta kimlik izinleri üzerinde ayrıntılı denetime ihtiyacınız olan üretim senaryoları için kullanıcı tarafından atanan yönetilen kimlikleri kullanın.
Bağlantıyı daha fazla özelleştirmek için şablondaki diğer ayarları kullanabilirsiniz. Bkz. Kimlik tabanlı bağlantılar için ortak özellikler.
Not
Yönetilen Kimlik bağlantılarının ayarlarını sağlamak için Azure Uygulama Yapılandırması veya Key Vault kullanırken, adların doğru çözümlendiğinden emin olmak için adların doğru çözümlendiğinden emin olmak için : yerine / veya __ gibi geçerli bir anahtar ayırıcısı kullanılmalıdır.
Örneğin: ServiceBusConnection:fullyQualifiedNamespace
Azure İşlevleri hizmetinde barındırıldığında, kimlik tabanlı bağlantılar managed identity 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 hizmet için bu, bu izinleri sağlayan yerleşik veya özel rolleri kullanarak Azure RBAC
Ö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 konularınıza ve kuyruklarınıza 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 Service Bus 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 |
|---|---|
| Tetikleyici1 | Azure Service Bus Veri Alıcısı, Azure Service Bus Veri Sahibi |
| Çıkış bağlaması | Azure Service Bus Veri Gönderen |
1 Service Bus konu başlıklarından tetikleme için rol atamasının Service Bus abonelik kaynağı üzerinde etkili bir kapsama sahip olması gerekir. Sadece konu dahil edilirse bir hata oluşur. Azure portalı gibi bazı istemciler, Service Bus abonelik kaynağını rol ataması kapsamı olarak kullanıma sunmaz. Böyle durumlarda bunun yerine Azure CLI kullanılabilir. Daha fazla bilgi edinmek için bkz. Azure Service Bus için
Zehirli iletiler
Zehirli ileti işleme Azure İşlevleri denetlenemez veya yapılandırılamaz. Service Bus zehirli iletilerin kendisini işler.
PeekLock davranışı
İşlevler çalışma zamanı PeekLock modunda bir ileti alır.
Varsayılan olarak, işlev başarıyla biterse çalışma zamanı Complete iletiyi çağırır veya işlev başarısız olursa çağırır Abandon . içinde özelliğiyleautoCompleteMessageshost.json devre dışı bırakabilirsiniz.
Varsayılan olarak, işlev başarıyla biterse çalışma zamanı Complete iletiyi çağırır veya işlev başarısız olursa çağırır Abandon . tetikleyici özniteliğindeki autoCompleteMessageshost.jsonözelliğiyle veya özelliği aracılığıyla otomatik tamamlama özelliğini devre dışı bırakabilirsiniz. İşlev kodunuz ileti düzenlemeyi işlerse otomatik tamamlama özelliğini devre dışı bırakmanız gerekir.
İşlev zaman aşımından PeekLock daha uzun çalışırsa, işlev çalıştığı sürece kilit otomatik olarak yenilenir.
maxAutoRenewDuration, ServiceBusProcessor.MaxAutoLockRenewalDuration ile eşlenen host.json yapılandırılabilir. Bu ayarın varsayılan değeri 5 dakikadır.
İleti meta verileri
Mesajlaşmaya özgü türler, meta verileri nesnenin özellikleri olarak kolayca almanıza olanak tanır. Bu özellikler İşlevler çalışma zamanı sürümüne, uzantı paketi sürümüne ve kullanılan C# modalitesine bağlıdır.
Bu özellikler ServiceBusReceivedMessage sınıfının üyeleridir.
| Özellik | Türü | Açıklama |
|---|---|---|
ApplicationProperties |
ApplicationProperties |
Gönderen tarafından ayarlanan özellikler. |
ContentType |
string |
Uygulamaya özgü mantık için gönderen ve alıcı tarafından kullanılan içerik türü tanımlayıcısı. |
CorrelationId |
string |
Bağıntı kimliği. |
DeliveryCount |
Int32 |
Teslimat sayısı. |
EnqueuedTime |
DateTime |
UTC olarak sıralanan saat. |
ScheduledEnqueueTimeUtc |
DateTime |
UTC olarak zamanlanan sıralanan saat. |
ExpiresAt |
DateTime |
UTC olarak sona erme zamanı. |
MessageId |
string |
Service Bus etkinse yinelenen iletileri tanımlamak için kullanabileceği kullanıcı tanımlı bir değer. |
ReplyTo |
string |
Kuyruk adresine yanıt verme. |
Subject |
string |
Meta veri özelliği yerine Label kullanılabilecek uygulamaya özgü etiket. |
To |
string |
Gönderme adresi. |
Sonraki adımlar
Azure İşlevleri (Çıkış bağlama)