Pemicu Azure Service Bus untuk Azure Functions
Gunakan pemicu Bus Layanan untuk menanggapi pesan dari antrean atau topik Bus Layanan. Dimulai dengan ekstensi versi 3.1.0, Anda dapat memicu antrean atau topik yang mendukung sesi.
Untuk informasi tentang pengaturan dan detail konfigurasi, lihat gambaran umum.
Bus Layanan keputusan penskalaan untuk paket Konsumsi dan Premium dibuat berdasarkan penskalaan berbasis target. Untuk informasi selengkapnya, lihat Penskalaan berbasis target.
Penting
Artikel ini menggunakan tab untuk mendukung beberapa versi model pemrograman Node.js. Model v4 umumnya tersedia dan dirancang untuk memiliki pengalaman yang lebih fleksibel dan intuitif untuk pengembang JavaScript dan TypeScript. Untuk detail selengkapnya tentang cara kerja model v4, lihat panduan pengembang Node.js Azure Functions. Untuk mempelajari selengkapnya tentang perbedaan antara v3 dan v4, lihat panduan migrasi.
Azure Functions mendukung dua model pemrograman untuk Python. Cara Anda menentukan pengikatan tergantung pada model pemrograman yang Anda pilih.
Model pemrograman Python v2 memungkinkan Anda menentukan pengikatan menggunakan dekorator langsung dalam kode fungsi Python Anda. Untuk informasi selengkapnya, lihat panduan pengembang Python.
Artikel ini mendukung kedua model pemrograman.
Contoh
Fungsi C# dapat dibuat dengan menggunakan salah satu mode C# berikut:
- Model pekerja terisolasi: Fungsi C# terkompilasi yang berjalan dalam proses pekerja yang terisolasi dari runtime. Proses pekerja terisolasi diperlukan untuk mendukung fungsi C# yang berjalan pada versi LTS dan non-LTS .NET dan .NET Framework. Ekstensi untuk fungsi proses pekerja yang terisolasi menggunakan
Microsoft.Azure.Functions.Worker.Extensions.*
namespace layanan. - Model dalam proses: Fungsi C# yang dikompilasi yang berjalan dalam proses yang sama dengan runtime Functions. Dalam variasi model ini, Functions dapat dijalankan menggunakan scripting C#, yang didukung terutama untuk pengeditan portal C#. Ekstensi untuk fungsi dalam proses menggunakan
Microsoft.Azure.WebJobs.Extensions.*
namespace layanan.
Penting
Dukungan akan berakhir untuk model dalam proses pada 10 November 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke model pekerja yang terisolasi untuk dukungan penuh.
Kode ini mendefinisikan dan menginisialisasi ILogger
:
private readonly ILogger<ServiceBusReceivedMessageFunctions> _logger;
public ServiceBusReceivedMessageFunctions(ILogger<ServiceBusReceivedMessageFunctions> logger)
{
_logger = logger;
}
Contoh ini menunjukkan fungsi C# yang menerima satu pesan antrean Bus Layanan dan menulisnya ke log:
[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;
}
Contoh ini menunjukkan fungsi C# yang menerima beberapa pesan antrean Bus Layanan dalam satu batch dan menulis masing-masing ke log:
[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);
}
}
Contoh ini menunjukkan fungsi C# yang menerima beberapa pesan antrean Bus Layanan, menulisnya ke log, lalu menyelesaikan pesan sebagai selesai:
[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);
}
Fungsi Java berikut menggunakan @ServiceBusQueueTrigger
anotasi dari pustaka runtime fungsi Java untuk menjelaskan konfigurasi pemicu antrean Bus Layanan. Fungsi ini mengambil pesan yang ditempatkan pada antrean dan menambahkannya ke log.
@FunctionName("sbprocessor")
public void serviceBusProcess(
@ServiceBusQueueTrigger(name = "msg",
queueName = "myqueuename",
connection = "myconnvarname") String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
Fungsi Java juga dapat dipicu ketika pesan ditambahkan ke topik Bus Layanan. Contoh berikut menggunakan @ServiceBusTopicTrigger
anotasi untuk menjelaskan konfigurasi pemicu.
@FunctionName("sbtopicprocessor")
public void run(
@ServiceBusTopicTrigger(
name = "message",
topicName = "mytopicname",
subscriptionName = "mysubscription",
connection = "ServiceBusConnection"
) String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
Contoh berikut menunjukkan fungsi TypeScript pemicu Bus Layanan. Fungsi ini membaca metadata pesan dan mencatat pesan antrean Bus Layanan.
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,
});
Contoh berikut menunjukkan Bus Layanan memicu fungsi JavaScript. Fungsi ini membaca metadata pesan dan mencatat pesan antrean Bus Layanan.
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);
},
});
Contoh berikut menunjukkan pengikatan pemicu Bus Layanan dalam file function.json dan fungsi PowerShell yang menggunakan pengikatan.
Berikut data pengikatan dalam file function.json:
{
"bindings": [
{
"name": "mySbMsg",
"type": "serviceBusTrigger",
"direction": "in",
"topicName": "mytopic",
"subscriptionName": "mysubscription",
"connection": "AzureServiceBusConnectionString"
}
]
}
Berikut fungsi yang berjalan saat pesan Bus Layanan dikirim.
param([string] $mySbMsg, $TriggerMetadata)
Write-Host "PowerShell ServiceBus queue trigger function processed message: $mySbMsg"
Contoh berikut menunjukkan cara membaca pesan antrean Bus Layanan melalui pemicu. Contohnya tergantung pada apakah Anda menggunakan model pemrograman Python v1 atau v2.
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'))
Contoh berikut menunjukkan cara membaca topik antrean Bus Layanan melalui pemicu.
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)
Atribut
Pustaka C# proses dalam proses dan terisolasi menggunakan atribut ServiceBusTriggerAttribute untuk menentukan pemicu fungsi. Skrip C# sebagai gantinya menggunakan file konfigurasi function.json seperti yang dijelaskan dalam panduan pembuatan skrip C#.
Tabel berikut menjelaskan properti yang dapat Anda atur menggunakan atribut pemicu ini:
Properti | Deskripsi |
---|---|
QueueName | Nama antrean untuk dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
TopicName | Nama topik yang akan dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
subscriptionName | Nama langganan yang akan dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
Koneksi | Nama pengaturan aplikasi atau koleksi pengaturan yang menentukan cara terhubung ke Azure Service Bus. Lihat Koneksi. |
IsBatched | Pesan dikirim dalam beberapa batch. Memerlukan array atau jenis kumpulan. |
isSessionsEnabled | true jika menghubungkan ke antrean atau langganan berbasis sesi. false jika tidak, yang merupakan nilai default. |
AutoCompleteMessages | true jika pemicu harus secara otomatis menyelesaikan pesan setelah pemanggilan berhasil. false jika tidak, seperti ketika Anda menangani penyelesaian pesan dalam kode. Jika tidak diatur secara eksplisit, perilaku akan didasarkan pada konfigurasi di host.json .autoCompleteMessages |
Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values
.
Dekorator
Hanya berlaku untuk model pemrograman Python v2.
Untuk fungsi Python v2 yang ditentukan menggunakan dekorator, properti berikut pada service_bus_queue_trigger
:
Properti | Deskripsi |
---|---|
arg_name |
Nama variabel yang mewakili antrean atau pesan topik dalam kode fungsi. |
queue_name |
Nama antrean untuk dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
connection |
Nama pengaturan aplikasi atau koleksi pengaturan yang menentukan cara terhubung ke Azure Service Bus. Lihat Koneksi. |
Untuk fungsi Python yang ditentukan dengan menggunakan function.json, lihat bagian Konfigurasi .
Anotasi
ServiceBusQueueTrigger
Anotasi memungkinkan Anda membuat fungsi yang berjalan saat pesan antrean Bus Layanan dibuat. Opsi konfigurasi yang tersedia mencakup properti berikut:
Properti | Deskripsi |
---|---|
nama | Nama variabel yang mewakili antrean atau pesan topik dalam kode fungsi. |
queueName | Nama antrean untuk dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
topicName | Nama topik yang akan dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
subscriptionName | Nama langganan yang akan dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
koneksi | Nama pengaturan aplikasi atau koleksi pengaturan yang menentukan cara terhubung ke Azure Service Bus. Lihat Koneksi. |
ServiceBusTopicTrigger
Anotasi memungkinkan Anda untuk menunjuk topik dan langganan untuk menargetkan data apa yang memicu fungsi.
Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values
.
Lihat contoh pemicu untuk detail selengkapnya.
Konfigurasi
Hanya berlaku untuk model pemrograman Python v1.
Tabel berikut menjelaskan properti yang bisa Anda atur pada objek yang options
diteruskan ke app.serviceBusQueue()
metode atau app.serviceBusTopic()
.
Properti | Deskripsi |
---|---|
queueName | Nama antrean untuk dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
topicName | Nama topik yang akan dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
subscriptionName | Nama langganan yang akan dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
koneksi | Nama pengaturan aplikasi atau koleksi pengaturan yang menentukan cara terhubung ke Azure Service Bus. Lihat Koneksi. |
accessRights | Hak akses untuk string koneksi. Nilai yang tersedia adalah manage dan listen . Defaultnya adalah manage , yang menunjukkan bahwa connection memiliki izin Kelola. Jika Anda menggunakan string koneksi yang tidak memiliki izin Kelola, atur accessRights ke "dengarkan". Jika tidak, runtime Azure Functions mungkin gagal melakukan operasi yang memerlukan hak kelola. Di Azure Functions versi 2.x dan yang lebih tinggi, properti ini tidak tersedia karena versi terbaru Bus Layanan SDK tidak mendukung operasi kelola. |
isSessionsEnabled | true jika menghubungkan ke antrean atau langganan berbasis sesi. false jika tidak, yang merupakan nilai default. |
autoComplete | Harus true untuk fungsi non-C#, artinya pemicu harus secara otomatis menyelesaikan panggilan setelah pemrosesan, atau kode fungsi secara manual menyelesaikan panggilan.Ketika diatur ke true , pemicu menyelesaikan pesan secara otomatis setelah eksekusi fungsi berhasil diselesaikan, jika belum berhasil diselesaikan, pemicu akan mengabaikan pesan.Pengecualian fungsi menghasilkan panggilan runtime abandonAsync di latar belakang. Jika tidak ada pengecualian terjadi, maka completeAsync dipanggil di latar belakang. Properti ini hanya tersedia di Azure Functions 2.x dan yang lebih tinggi. |
Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values
.
Tabel berikut menjelaskan properti konfigurasi pengikatan yang Anda atur di file function.json.
Properti function.json | Deskripsi |
---|---|
jenis | Harus diatur ke serviceBusTrigger . Properti ini diatur secara otomatis saat Anda membuat pemicu di portal Microsoft Azure. |
arah | Harus diatur ke "in". Properti ini diatur secara otomatis saat Anda membuat pemicu di portal Microsoft Azure. |
nama | Nama variabel yang mewakili antrean atau pesan topik dalam kode fungsi. |
queueName | Nama antrean untuk dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
topicName | Nama topik yang akan dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
subscriptionName | Nama langganan yang akan dipantau. Atur hanya saat memantau antrean, bukan untuk topik. |
koneksi | Nama pengaturan aplikasi atau koleksi pengaturan yang menentukan cara terhubung ke Azure Service Bus. Lihat Koneksi. |
accessRights | Hak akses untuk string koneksi. Nilai yang tersedia adalah manage dan listen . Defaultnya adalah manage , yang menunjukkan bahwa connection memiliki izin Kelola. Jika Anda menggunakan string koneksi yang tidak memiliki izin Kelola, atur accessRights ke "dengarkan". Jika tidak, runtime Azure Functions mungkin gagal melakukan operasi yang memerlukan hak kelola. Di Azure Functions versi 2.x dan yang lebih tinggi, properti ini tidak tersedia karena versi terbaru Bus Layanan SDK tidak mendukung operasi kelola. |
isSessionsEnabled | true jika menghubungkan ke antrean atau langganan berbasis sesi. false jika tidak, yang merupakan nilai default. |
autoComplete | Harus true untuk fungsi non-C#, artinya pemicu harus secara otomatis menyelesaikan panggilan setelah pemrosesan, atau kode fungsi secara manual menyelesaikan panggilan.Ketika diatur ke true , pemicu menyelesaikan pesan secara otomatis setelah eksekusi fungsi berhasil diselesaikan, jika belum berhasil diselesaikan, pemicu akan mengabaikan pesan.Pengecualian fungsi menghasilkan panggilan runtime abandonAsync di latar belakang. Jika tidak ada pengecualian terjadi, maka completeAsync dipanggil di latar belakang. Properti ini hanya tersedia di Azure Functions 2.x dan yang lebih tinggi. |
Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values
.
Lihat Bagian contoh untuk contoh lengkapnya.
Penggunaan
Jenis parameter berikut didukung oleh semua modalitas C# dan versi ekstensi:
Tipe | Deskripsi |
---|---|
System.String | Gunakan saat pesan adalah teks sederhana. |
byte[] | Gunakan untuk pesan data biner. |
Objek | Saat pesan berisi JSON, Functions mencoba mendeserialisasi data JSON ke dalam jenis objek CLR biasa yang sudah lama. |
Jenis parameter khusus olahpesan berisi metadata pesan tambahan. Jenis spesifik yang didukung oleh pemicu Bus Layanan bergantung pada versi runtime Functions, versi paket ekstensi, dan modalitas C# yang digunakan.
Saat Anda ingin fungsi memproses satu pesan, pemicu Bus Layanan dapat mengikat ke jenis berikut:
Tipe | Deskripsi |
---|---|
string |
Pesan sebagai string. Gunakan saat pesan adalah teks sederhana. |
byte[] |
Byte pesan. |
Jenis yang bisa diserialisasikan JSON | Saat peristiwa berisi data JSON, Functions mencoba mendeserialisasi data JSON ke dalam jenis objek CLR (POCO) yang sudah lama. |
ServiceBusReceivedMessage1 | Objek pesan. Saat mengikat ke ServiceBusReceivedMessage , Anda dapat secara opsional juga menyertakan parameter jenis ServiceBusMessageActions1,2 untuk melakukan tindakan penyelesaian pesan. |
Saat Anda ingin fungsi memproses batch pesan, pemicu Bus Layanan dapat mengikat ke jenis berikut:
Tipe | Deskripsi |
---|---|
T[] di mana T adalah salah satu jenis pesan tunggal |
Array peristiwa dari batch. Setiap entri mewakili satu peristiwa. Saat mengikat ke ServiceBusReceivedMessage[] , Anda dapat secara opsional juga menyertakan parameter jenis ServiceBusMessageActions1,2 untuk melakukan tindakan penyelesaian pesan. |
1 Untuk menggunakan jenis ini, Anda perlu mereferensikan Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 atau yang lebih baru dan dependensi umum untuk pengikatan jenis SDK.
2 Saat menggunakan ServiceBusMessageActions
, atur AutoCompleteMessages
properti atribut pemicu ke false
. Ini mencegah runtime mencoba menyelesaikan pesan setelah pemanggilan fungsi berhasil.
Karena properti Connection
tidak ditentukan, Functions mencari pengaturan aplikasi bernama AzureWebJobsServiceBus
, yang merupakan nama default untuk string koneksi Bus Layanan. Anda juga dapat mengatur properti Connection
untuk menentukan nama pengaturan aplikasi yang berisi string koneksi Bus Layanan untuk digunakan.
Pesan Bus Layanan masuk tersedia melalui parameter ServiceBusQueueMessage
atau ServiceBusTopicMessage
.
Instans Bus Layanan tersedia melalui parameter yang dikonfigurasi dalam properti nama file function.json.
Pesan antrean tersedia untuk fungsi melalui parameter yang diketik sebagai func.ServiceBusMessage
. Pesan Bus Layanan diteruskan ke fungsi sebagai string atau objek JSON.
Untuk contoh lengkapnya, lihat bagian contoh.
Koneksi
Properti connection
adalah referensi ke konfigurasi lingkungan yang menentukan bagaimana aplikasi seharusnya tersambung ke Bus Layanan. Ini mungkin menentukan:
- Nama pengaturan aplikasi yang berisi string koneksi
- Nama awalan bersama untuk beberapa pengaturan aplikasi, bersama-sama menentukan koneksi berbasis identitas.
Jika nilai yang dikonfigurasi adalah kecocokan persis untuk pengaturan tunggal dan kecocokan awalan untuk pengaturan lainnya, kecocokan persis akan digunakan.
String koneksi
Untuk mendapatkan string koneksi, ikuti langkah-langkah yang ditunjukkan di Dapatkan Informasi masuk manajemen. String koneksi harus untuk namespace Bus Layanan, tidak terbatas pada antrean atau topik tertentu.
String koneksi ini harus disimpan dalam pengaturan aplikasi dengan nama yang cocok dengan nilai yang ditentukan oleh properti connection
konfigurasi pengikatan.
Jika nama pengaturan aplikasi dimulai dengan "AzureWebJobs", Anda hanya dapat menentukan sisa nama. Misalnya, jika Anda mengatur connection
ke "MyServiceBus", runtime Azure Functions mencari pengaturan aplikasi yang bernama "AzureWebJobsMyServiceBus". Jika Anda membiarkan connection
kosong, runtime Azure Functions menggunakan string koneksi Microsoft Azure Service Bus default di pengaturan aplikasi yang diberi nama "AzureWebJobsServiceBus".
Koneksi berbasis identitas
Jika Anda menggunakan ekstensi versi 5.x atau yang lebih tinggi, alih-alih menggunakan string koneksi dengan rahasia, Anda dapat meminta aplikasi menggunakan identitas Microsoft Entra. Untuk melakukan ini, Anda harus menentukan pengaturan di bawah awalan umum yang memetakan ke properti connection
dalam konfigurasi pemicu dan pengikatan.
Dalam mode ini, ekstensi tersebut memerlukan properti berikut:
Properti | Templat variabel lingkungan | Deskripsi | Contoh nilai |
---|---|---|---|
Namespace yang Sepenuhnya Memenuhi Syarat | <CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace |
Namespace layanan Bus Layanan yang sepenuhnya memenuhi syarat. | <service_bus_namespace>.servicebus.windows.net |
Properti tambahan dapat diatur untuk menyesuaikan koneksi. Lihat Properti umum untuk koneksi berbasis identitas.
Catatan
Saat menggunakan Azure App Configuration atau Key Vault guna menyediakan pengaturan untuk koneksi Identitas Terkelola, nama pengaturan harus menggunakan pemisah kunci yang valid seperti :
atau /
sebagai ganti __
untuk memastikan nama diselesaikan dengan benar.
Contohnya,<CONNECTION_NAME_PREFIX>:fullyQualifiedNamespace
.
Saat dihosting di layanan Azure Functions, koneksi berbasis identitas menggunakan identitas terkelola. Identitas yang ditetapkan sistem digunakan secara default, meskipun identitas yang ditetapkan pengguna dapat ditentukan dengan credential
dan clientID
properti. Perhatikan bahwa mengonfigurasi identitas yang ditetapkan oleh pengguna dengan ID sumber daya tidak didukung. Saat dijalankan dalam konteks lain, seperti pengembangan lokal, identitas pengembang Anda digunakan sebagai gantinya, meskipun ini dapat dikustomisasi. Lihat Pengembangan lokal dengan koneksi berbasis identitas.
Memberikan izin kepada identitas
Identitas apa pun yang digunakan harus memiliki izin untuk melakukan tindakan yang dimaksudkan. Untuk sebagian besar layanan Azure, ini berarti Anda perlu menetapkan peran di Azure RBAC, menggunakan peran bawaan atau kustom yang menyediakan izin tersebut.
Penting
Beberapa izin mungkin diekspos oleh layanan target yang tidak diperlukan untuk semua konteks. Jika memungkinkan, patuhi prinsip hak istimewa paling rendah, dengan memberikan identitas hanya hak istimewa yang diperlukan. Misalnya, jika aplikasi hanya perlu dapat membaca dari sumber data, gunakan peran yang hanya memiliki izin untuk membaca. Tidak pantas untuk menetapkan peran yang juga memungkinkan menulis ke layanan itu, karena ini akan menjadi izin yang berlebihan untuk operasi baca. Demikian pula, Anda ingin memastikan penetapan peran hanya mencakup sumber daya yang perlu dibaca.
Anda akan perlu membuat penetapan peran yang menyediakan akses ke topik dan antrean Anda saat runtime. Peran manajemen seperti Pemilik tidak cukup. Tabel berikut menunjukkan peran bawaan yang direkomendasikan saat menggunakan ekstensi Bus Layanan dalam operasi normal. Aplikasi Anda mungkin memerlukan izin tambahan berdasarkan kode yang Anda tulis.
Jenis pengikatan | Peran bawaan contoh |
---|---|
Pemicu 1 | Penerima Data Azure Service Bus, Pemilik Data Azure Service Bus |
Pengikatan output | Azure Service Bus Data Sender |
1 Untuk memicu dari topik Bus Layanan, penetapan peran harus memiliki cakupan yang efektif atas sumber daya langganan Bus Layanan. Jika hanya topik yang disertakan, kesalahan akan terjadi. Beberapa klien, seperti portal Azure, tidak mengekspos sumber daya langganan Bus Layanan sebagai cakupan untuk penetapan peran. Dalam kasus seperti itu, Azure CLI dapat digunakan sebagai gantinya. Untuk mempelajari selengkapnya, lihat Peran bawaan Azure untuk Azure Service Bus.
Pesan racun
Penanganan pesan racun tidak dapat dikontrol atau dikonfigurasi di Azure Functions. Bus Layanan menangani pesan racun itu sendiri.
Perilaku PeekLock
Runtime Functions menerima pesan dalam mode PeekLock.
Secara default, runtime memanggil Complete
pada pesan jika fungsi berhasil diselesaikan, atau memanggil Abandon
jika fungsi gagal. Anda dapat menonaktifkan penyelesaian otomatis melalui dengan properti di host.json
.autoCompleteMessages
Secara default, runtime memanggil Complete
pada pesan jika fungsi berhasil diselesaikan, atau memanggil Abandon
jika fungsi gagal. Anda dapat menonaktifkan penyelesaian otomatis melalui properti autoCompleteMessages
di atau host.json
melalui properti pada atribut pemicu. Anda harus menonaktifkan penyelesaian otomatis jika kode fungsi Anda menangani penyelesaian pesan.
Jika fungsi berjalan lebih lama PeekLock
dari waktu habis, kunci secara otomatis diperbarui selama fungsi berjalan. maxAutoRenewDuration
dapat dikonfigurasi dalam host.json, yang memetakan ke ServiceBusProcessor.MaxAutoLockRenewalDuration. Nilai default pengaturan ini adalah 5 menit.
Metadata Pesan
Jenis spesifik Olahpesan memungkinkan Anda mengambil metadata sebagai properti objek dengan mudah. Properti ini bergantung pada versi runtime Functions, versi paket ekstensi, dan modalitas C# yang digunakan.
Properti ini adalah anggota kelas ServiceBusReceivedMessage.
Properti | Tipe | Deskripsi |
---|---|---|
ApplicationProperties |
ApplicationProperties |
Properti yang diatur oleh pengirim. |
ContentType |
string |
Pengidentifikasi jenis konten yang digunakan oleh pengirim dan penerima untuk logika khusus aplikasi. |
CorrelationId |
string |
ID korelasi. |
DeliveryCount |
Int32 |
Jumlah total pengiriman. |
EnqueuedTime |
DateTime |
Waktu yang telah ditentukan dalam UTC. |
ScheduledEnqueueTimeUtc |
DateTime |
Waktu antrean yang dijadwalkan dalam UTC. |
ExpiresAt |
DateTime |
Waktu kedaluwarsa di UTC. |
MessageId |
string |
Nilai yang ditentukan pengguna yang dapat digunakan oleh Bus Layanan untuk membuat pesan duplikat, jika diaktifkan. |
ReplyTo |
string |
Balasan ke alamat antrean. |
Subject |
string |
Label khusus aplikasi yang dapat digunakan sebagai ganti properti metadata Label . |
To |
string |
Kirimkan ke alamat. |