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ıza olanak tanır. 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 .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.

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 kuyruk iletisi alan ve bunu günlüklere yazan bir 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österilir:

[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 bir 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 Java işlevleri çalışma zamanı kitaplığındaki ek açıklamayı kullanır@ServiceBusQueueTrigger. 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);
 }

Service Bus konusuna bir ileti eklendiğinde Java işlevleri 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);
    }

Aşağıdaki örnekte Service Bus tetikleyicisi TypeScript işlevi gösterilmektedir. İşlev, ileti meta verilerini 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, ileti meta verilerini 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, bir 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"

Aşağıdaki örnekte, bir Service Bus kuyruk iletisinin tetikleyici aracılığıyla 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="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, bir Service Bus kuyruğu konusunun tetikleyici aracılığıyla 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 işlem içi hem de yalıtılmış çalışan işlemi 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'a 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 ayarlanmazsa, davranış içindekihost.json yapılandırmayı autoCompleteMessages temel alır.

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

Dekoratörler

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

Bir dekoratör kullanılarak tanımlanan Python v2 işlevleri için, üzerinde aşağıdaki özellikler:service_bus_queue_trigger

Ö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'a 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 Yapılandırma bölümüne bakın.

Ek Açıklamalar

Ek ServiceBusQueueTrigger açıklama, 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.
subscriptionName İzlenecek aboneliğin adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın.
bağlantı Service Bus'a 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ına Values ekleyin.

Daha fazla ayrıntı için tetikleyici örneğine bakın.

Yapılandırma

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

Aşağıdaki tabloda veya app.serviceBusTopic() yöntemlerine app.serviceBusQueue() geçirilen nesnede options 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.
subscriptionName İzlenecek aboneliğin adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın.
bağlantı Service Bus'a 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 listendeğerleridirmanage. Varsayılan değer, 'nin Yönet iznine sahip olduğunu connection gösteren değeridirmanage. Yönetme izni olmayan bir bağlantı dizesi kullanıyorsanız, "dinleme" olarak ayarlayınaccessRights. Aksi takdirde, İşlevler çalışma zamanı yönetme hakları gerektiren işlemleri gerçekleştirmeye çalışmayabilir. Service Bus SDK'sının en son sürümü işlemleri yönetmeyi desteklemediğinden, Azure İşlevleri sürüm 2.x ve üzeri sürümlerde 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ıları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ına Values 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
type olarak ayarlanmalıdır serviceBusTrigger. Bu özellik, Tetikleyiciyi Azure portalında oluşturduğunuzda otomatik olarak ayarlanır.
direction "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.
subscriptionName İzlenecek aboneliğin adı. Bir kuyruk için değil, yalnızca bir konu izleniyorsa ayarlayın.
bağlantı Service Bus'a 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 listendeğerleridirmanage. Varsayılan değer, 'nin Yönet iznine sahip olduğunu connection gösteren değeridirmanage. Yönetme izni olmayan bir bağlantı dizesi kullanıyorsanız, "dinleme" olarak ayarlayınaccessRights. Aksi takdirde, İşlevler çalışma zamanı yönetme hakları gerektiren işlemleri gerçekleştirmeye çalışmayabilir. Service Bus SDK'sının en son sürümü işlemleri yönetmeyi desteklemediğinden, Azure İşlevleri sürüm 2.x ve üzeri sürümlerde 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ıları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ına Values 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:

Type 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:

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

öğesine ServiceBusReceivedMessagebağlarken, isteğe bağlı olarak ileti düzenleme eylemleri gerçekleştirmek için ServiceBusMessageActions1,2 türünde bir parametre de ekleyebilirsiniz.

İşlevin bir toplu ileti işlemesini istediğinizde, Service Bus tetikleyicisi aşağıdaki türlere bağlanabilir:

Type Açıklama
T[] burada T tek ileti türlerinden biridir Toplu işlemden olay dizisi. Her girdi bir olayı temsil eder.

öğesine ServiceBusReceivedMessage[]bağlarken, isteğe bağlı olarak ileti düzenleme eylemleri gerçekleştirmek için ServiceBusMessageActions1,2 türünde bir parametre de ekleyebilirsiniz.

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

2 kullanırken tetikleyici özniteliğinin özelliğini olarak falseayarlayınAutoCompleteMessages.ServiceBusMessageActions Bu, çalışma zamanının başarılı bir işlev çağrısından sonra iletileri tamamlamaya çalışmasını engeller.

Connection Özellik tanımlanmadığında İşlevler, Service Bus bağlantı dizesi için varsayılan ad olan adlı AzureWebJobsServiceBusbir uygulama ayarını arar. Özelliğini, kullanılacak Service Bus bağlantı dizesi içeren bir uygulama ayarının adını belirtmek için de ayarlayabilirsinizConnection.

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.

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

Bağlantılar

connection özelliği, uygulamanın Service Bus'a 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 Yönetim kimlik bilgilerini alma konusunda gösterilen adımları izleyin. bağlantı dizesi, belirli bir kuyruk veya konu başlığıyla sınırlı olmayan bir Service Bus ad alanı için olmalıdır.

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ı belirtebilirsiniz. Örneğin, "MyServiceBus" olarak ayarlarsanız connection , İşlevler çalışma zamanı "AzureWebJobsMyServiceBus" adlı bir uygulama ayarı arar. Boş bırakırsanızconnection, İşlevler çalışma zamanı "AzureWebJobsServiceBus" adlı uygulama ayarında varsayılan Service Bus bağlantı dizesi kullanır.

Kimlik tabanlı bağlantılar

Uzantının 5.x veya üzeri bir sürümünü kullanıyorsanız, gizli dizi içeren bir bağlantı dizesi kullanmak yerine uygulamanın bir Microsoft Entra kimliği kullanmasını sağlayabilirsiniz. Bunu yapmak için, tetikleyici ve bağlama yapılandırmasındaki özelliğiyle connection eşlenen ortak bir ön ekin altında ayarlar tanımlayabilirsiniz.

Bu modda uzantı aşağıdaki özellikleri gerektirir:

Özellik Ortam değişkeni şablonu Açıklama Örnek değer
Tam Ad Alanı <CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace Tam Service Bus ad alanı. <>service_bus_namespace.servicebus.windows.net

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

Not

Yönetilen Kimlik bağlantıları için ayarlar sağlamak üzere Azure Uygulaması Yapılandırması veya Key Vault kullanılırken, adların doğru çözümlendiğinden __ emin olmak için adların yerine veya / gibi : geçerli bir anahtar ayırıcı kullanılmalıdır.

Örneğin, <CONNECTION_NAME_PREFIX>:fullyQualifiedNamespace.

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 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öndereni

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 atama kapsamı olarak kullanıma sunmaz. Bu gibi 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ğiylehost.json aracılığıyla otomatik tamamlama özelliğini autoCompleteMessages 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 autoCompleteMessages host.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'ın 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