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 ILogger
tanı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 | true oturum 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. false aksi 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 listen değ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 | true oturum 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 true ayarlandığı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 listen değ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 | true oturum 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 true ayarlandığı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 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. |
İş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 false
ayarlayı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ı AzureWebJobsServiceBus
bir 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.
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.ServiceBusMessage
yazı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. |