Azure İşlevleri için Azure Service Bus tetikleyicisi

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 Python SDK Bağlamaları'nı izleyin.

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

Uygulamalar yalnızca Python v2 programlama modeli.

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

Uygulamalar yalnızca Python v1 programlama modeli.

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.

1 Bu türleri kullanmak için Microsoft.Azure başvurmanız gerekir. FUNCTIONS.Worker.Extensions.ServiceBus 5.14.1 veya üzeri ve SDK türü bağlamaları için koşu bağımlılıkları.

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.

İşlevinizin ilk bağımsız değişkeni olarak kuyruğa veya konu iletisine erişin. Service Bus iletisi işleve dize veya JSON nesnesi olarak geçirilir.

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 SDK türleri.

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 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 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 Azure yerleşik rolleri.

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)