Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте триггер служебная шина для реагирования на сообщения из очереди или раздела служебная шина. Начиная с версии расширения 3.1.0, можно использовать триггер для раздела или очереди с поддержкой сеанса.
Сведения об установке и настройке см. в обзорной статье.
служебная шина решения о масштабировании планов потребления и уровня "Премиум" принимаются на основе масштабирования на основе целевого объекта. Дополнительные сведения см. в статье о масштабировании на основе целевого объекта.
Внимание
В этой статье используются вкладки для поддержки нескольких версий модели программирования Node.js. Модель версии 4 общедоступна и предназначена для более гибкого и интуитивно понятного интерфейса для разработчиков JavaScript и TypeScript. Дополнительные сведения о работе модели версии 4 см. в руководстве разработчика Функции Azure Node.js разработчика. Дополнительные сведения о различиях между версиями 3 и 4 см. в руководстве по миграции.
Функции Azure поддерживает две модели программирования для Python. Способ определения привязок зависит от выбранной модели программирования.
Модель программирования Python версии 2 позволяет определять привязки с помощью декораторов непосредственно в коде функции Python. Дополнительные сведения см. в руководстве разработчика Python.
Эта статья поддерживает обе модели программирования.
Пример
Функцию C# можно создать с помощью одного из следующих режимов C#:
-
Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в LTS и версиях, отличных от LTS, .NET и платформы .NET. Расширения для изолированных рабочих процессов используют пространства имен
Microsoft.Azure.Functions.Worker.Extensions.*. -
Модель внутрипроцессного процесса: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций. В варианте этой модели функции можно запускать с помощью скриптов C#, которая поддерживается главным образом для редактирования портала C#. Расширения для функций в процессе используют пространства имен
Microsoft.Azure.WebJobs.Extensions.*.
Внимание
Поддержка будет завершена для модели в процессе 10 ноября 2026 г. Настоятельно рекомендуется перенести приложения в изолированную рабочую модель для полной поддержки.
Этот код определяет и инициализирует ILogger:
private readonly ILogger<ServiceBusReceivedMessageFunctions> _logger;
public ServiceBusReceivedMessageFunctions(ILogger<ServiceBusReceivedMessageFunctions> logger)
{
_logger = logger;
}
В этом примере показана функция C#, которая получает одно сообщение очереди служебная шина и записывает его в журналы:
[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;
}
В этом примере показана функция C# которая получает несколько сообщений очереди служебная шина в одном пакете и записывает каждую из них в журналы:
[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);
}
}
В этом примере показана функция C#, которая получает несколько сообщений очереди служебная шина, записывает его в журналы, а затем урегулирует сообщение по завершении:
[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);
}
Следующая функция Java использует заметку @ServiceBusQueueTrigger из библиотеки среды выполнения функций Java для описания конфигурации триггера очереди служебная шина. Функция извлекает сообщение, помещенное в очередь, и добавляет его в журналы.
@FunctionName("sbprocessor")
public void serviceBusProcess(
@ServiceBusQueueTrigger(name = "msg",
queueName = "myqueuename",
connection = "myconnvarname") String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
Java функции также можно активировать при добавлении сообщения в раздел служебная шина. В следующем примере заметка @ServiceBusTopicTrigger используется для описания конфигурации триггера.
@FunctionName("sbtopicprocessor")
public void run(
@ServiceBusTopicTrigger(
name = "message",
topicName = "mytopicname",
subscriptionName = "mysubscription",
connection = "ServiceBusConnection"
) String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
В этом примере используется тип ПАКЕТА SDK ServiceBusReceivedMessage, полученный из ServiceBusMessageContext, предоставляемый триггером служебная шина:
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 см. в примере стратегии экспоненциальной стратегии обратного выхода.
Дополнительные сведения см. в статье о типах пакетов SDK Node.js.
В следующем примере показана функция триггера служебная шина TypeScript. Функция считывает метаданные message метаданные и записывает сообщение очереди служебная шина.
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,
});
В следующем примере показана функция триггера служебная шина JavaScript. Функция считывает метаданные message метаданные и записывает сообщение очереди служебная шина.
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);
},
});
В следующем примере показана привязка триггера служебная шина в файле
Данные привязки в файле function.json:
{
"bindings": [
{
"name": "mySbMsg",
"type": "serviceBusTrigger",
"direction": "in",
"topicName": "mytopic",
"subscriptionName": "mysubscription",
"connection": "AzureServiceBusConnectionString"
}
]
}
Ниже приведена функция, которая выполняется при отправке сообщения служебная шина.
param([string] $mySbMsg, $TriggerMetadata)
Write-Host "PowerShell ServiceBus queue trigger function processed message: $mySbMsg"
В этом примере типы SDK используются для прямого доступа к базовому объекту ServiceBusReceivedMessage, предоставленному триггером служебная шина:
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)
Функция считывает различные свойства ServiceBusReceivedMessage типа и регистрирует их.
Дополнительные примеры использования типов пакета SDK служебная шина см. в примерах ServiceBusReceivedMessage. Пошаговые инструкции по включению привязок типа SDK в приложение-функцию см. в Python привязки пакета SDK для служебная шина sample.
Примечание.
Известные ограничения включают:
- Свойство
messageне поддерживается. - Для поддержки пакетного сообщения требуется версия 4.1039 или более поздняя среда выполнения функций.
Дополнительные сведения, включая поддерживаемые другие привязки типов ПАКЕТА SDK, см. в статье о привязках типов пакета SDK.
В этом примере показано, как считывать сообщение очереди служебная шина с помощью триггера. Пример зависит от того, используется ли модель программирования v1 или версии Python 2.
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'))
В следующем примере показано, как прочитать раздел очереди служебная шина с помощью триггера.
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)
Атрибуты
Библиотеки in-process и isolated worker process C# используют атрибут ServiceBusTriggerAttribute для определения триггера функции. Вместо этого скрипт C# использует файл конфигурации function.json, как описано в руководстве по скриптам C#.
В следующей таблице описаны свойства, которые можно задать с помощью этого атрибута триггера:
| Свойство | Описание |
|---|---|
| Имя очереди | Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел. |
| Имя раздела | Имя отслеживаемого раздела. Задается только в том случае, если отслеживается раздел, но не очередь. |
| Параметр SubscriptionName | Имя отслеживаемой подписки. Задается только в том случае, если отслеживается раздел, но не очередь. |
| Соединение | Имя параметра или коллекции параметров приложения, указывающее, как подключиться к служебная шина. См. раздел Подключения. |
| IsBatched | Сообщения доставляются пакетами. Требуется массив или тип коллекции. |
| IsSessionsEnabled |
true при подключении к очереди или подписке с поддержкой сеансов.
false в противном случае (значение по умолчанию). |
| АвтозавершениеMessages |
true Значение , если триггер должен автоматически завершить сообщение после успешного вызова.
false Если это не должно быть, например при обработке урегулирования сообщений в коде. Если оно не задано явным образом, поведение основано на autoCompleteMessages конфигурации в host.json. |
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.
Декораторы
Применяется только к модели программирования Python версии 2.
Для функций Python версии 2, определенных с помощью декоратора, следующие свойства в service_bus_queue_trigger:
| Свойство | Описание |
|---|---|
arg_name |
Имя переменной, представляющей сообщение очереди или раздела в коде функции. |
queue_name |
Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел. |
connection |
Имя параметра или коллекции параметров приложения, указывающее, как подключиться к служебная шина. См. раздел Подключения. |
Сведения о функциях Python, определенных с помощью
Заметки
Заметка ServiceBusQueueTrigger позволяет создать функцию, которая выполняется при создании сообщения очереди служебная шина. Доступные параметры конфигурации включают следующие свойства:
| Свойство | Описание |
|---|---|
| имя | Имя переменной, представляющей сообщение очереди или раздела в коде функции. |
| queueName | Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел. |
| topicName | Имя отслеживаемого раздела. Задается только в том случае, если отслеживается раздел, но не очередь. |
| название подписки | Имя отслеживаемой подписки. Задается только в том случае, если отслеживается раздел, но не очередь. |
| Подключение | Имя параметра или коллекции параметров приложения, указывающее, как подключиться к служебная шина. См. раздел Подключения. |
Заметка ServiceBusTopicTrigger позволяет назначить раздел и подписку, чтобы указать, какие данные активируют функцию.
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.
Дополнительные сведения см. в этом примере триггера.
Настройка
Применяется только к модели программирования Python версии 1.
В следующей таблице описываются свойства, которые можно задать для объекта, переданного optionsapp.serviceBusQueue() в методы или app.serviceBusTopic() методы.
| Свойство | Описание |
|---|---|
| queueName | Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел. |
| topicName | Имя отслеживаемого раздела. Задается только в том случае, если отслеживается раздел, но не очередь. |
| название подписки | Имя отслеживаемой подписки. Задается только в том случае, если отслеживается раздел, но не очередь. |
| Подключение | Имя параметра или коллекции параметров приложения, указывающее, как подключиться к служебная шина. См. раздел Подключения. |
| accessRights | Права доступа к строка подключения. Доступные значения: manage и listen. Значение по умолчанию — manage. Это означает, что у свойства connection есть разрешение на управление. Если вы используете строка подключения, у которых нет разрешения Manage, задайте для параметра accessRights значение "прослушивать". В противном случае выполнение операций, для которых требуются права на управление, в среде выполнения Функций Azure может завершиться ошибкой. В Функции Azure версии 2.x и выше это свойство недоступно, так как последняя версия пакета SDK служебная шина не поддерживает управление операциями. |
| isSessionsEnabled |
true при подключении к очереди или подписке с поддержкой сеансов.
false в противном случае (значение по умолчанию). |
| автозавершение | Должен быть равен true для функций, отличных от C#, это означает, что триггер должен вызываться автоматически после обработки в противном случае код функции вызывает завершение вручную.Если установлено значение true, триггер автоматически завершает обработку сообщения, если выполнение функции завершается успешно, в противном случае прерывает обработку сообщения.Исключения в функции приводят к вызову abandonAsync среды выполнения в фоновом режиме. Если исключение не возникает, completeAsync вызывается в фоновом режиме. Это свойство доступно только в Функции Azure 2.x и выше. |
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.
В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json.
| Свойство в function.json | Описание |
|---|---|
| тип | Должен иметь значениеserviceBusTrigger. Это свойство устанавливается автоматически при создании триггера на портале Azure. |
| направление | Для этого свойства необходимо задать значение "in". Это свойство устанавливается автоматически при создании триггера на портале Azure. |
| имя | Имя переменной, представляющей сообщение очереди или раздела в коде функции. |
| queueName | Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел. |
| topicName | Имя отслеживаемого раздела. Задается только в том случае, если отслеживается раздел, но не очередь. |
| название подписки | Имя отслеживаемой подписки. Задается только в том случае, если отслеживается раздел, но не очередь. |
| Подключение | Имя параметра или коллекции параметров приложения, указывающее, как подключиться к служебная шина. См. раздел Подключения. |
| accessRights | Права доступа к строка подключения. Доступные значения: manage и listen. Значение по умолчанию — manage. Это означает, что у свойства connection есть разрешение на управление. Если вы используете строка подключения, у которых нет разрешения Manage, задайте для параметра accessRights значение "прослушивать". В противном случае выполнение операций, для которых требуются права на управление, в среде выполнения Функций Azure может завершиться ошибкой. В Функции Azure версии 2.x и выше это свойство недоступно, так как последняя версия пакета SDK служебная шина не поддерживает управление операциями. |
| isSessionsEnabled |
true при подключении к очереди или подписке с поддержкой сеансов.
false в противном случае (значение по умолчанию). |
| автозавершение | Должен быть равен true для функций, отличных от C#, это означает, что триггер должен вызываться автоматически после обработки в противном случае код функции вызывает завершение вручную.Если установлено значение true, триггер автоматически завершает обработку сообщения, если выполнение функции завершается успешно, в противном случае прерывает обработку сообщения.Исключения в функции приводят к вызову abandonAsync среды выполнения в фоновом режиме. Если исключение не возникает, completeAsync вызывается в фоновом режиме. Это свойство доступно только в Функции Azure 2.x и выше. |
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.
Подробные примеры см. в разделе Примеры.
Использование
Следующие типы параметров поддерживаются всеми модальностями и версиями расширений C#:
| Тип | Описание |
|---|---|
| System.String | Используется, когда сообщение является простым текстом. |
| byte[] | Используется для сообщений в виде двоичных данных. |
| Объект | Если сообщение содержит JSON, служба "Функции" пытаются десериализовать данные JSON в известный объект POCO. |
Типы параметров, относящихся к обмену сообщениями, содержат дополнительные метаданные сообщения. Определенные типы, поддерживаемые триггером служебная шина, зависят от версии среды выполнения Функций, версии пакета расширения и используемой модальности C#.
Если требуется, чтобы функция обрабатывала одно сообщение, триггер служебная шина может привязаться к следующим типам:
| Тип | Описание |
|---|---|
string |
Сообщение в виде строки. Используется, когда сообщение является простым текстом. |
byte[] |
Байт сообщения. |
| Сериализуемые в JSON типы | Если событие содержит данные JSON, функции пытаются десериализировать данные JSON в обычный тип объекта CLR (POCO). |
| ServiceBusReceivedMessage1 | Объект сообщения. При привязке к |
Если требуется, чтобы функция обрабатывала пакет сообщений, триггер служебная шина может привязаться к следующим типам:
| Тип | Описание |
|---|---|
T[] где T является одним из типов одного сообщения |
Массив событий из пакета. Каждая запись представляет одно событие. При привязке к |
1 Чтобы использовать эти типы, необходимо ссылаться на Microsoft.Azure. Functions.Worker.Extensions.ServiceBus 5.14.1 или более поздней версии и зависимости common для привязок типов ПАКЕТА SDK.
2 При использовании ServiceBusMessageActionsзадайте AutoCompleteMessages для свойства атрибута триггера значение false. Это предотвращает попытку выполнения сообщений после успешного вызова функции.
Если свойство Connection не определено, функции ищут параметр приложения с именем AzureWebJobsServiceBus, который является именем по умолчанию для служебная шина строка подключения. Можно также задать свойство Connection, чтобы указать имя параметра приложения, содержащего используемый служебная шина строка подключения.
Входящее сообщение служебная шина доступно через параметр ServiceBusQueueMessage или ServiceBusTopicMessage.
Доступ к сообщению очереди или раздела в качестве первого аргумента функции. Сообщение служебная шина передается в функцию в виде строки или объекта JSON.
Экземпляр служебная шина доступен через параметр, настроенный в свойстве имени файла function.json.
Сообщение очереди доступно функции через параметр, типизированный как func.ServiceBusMessage. Сообщение служебная шина передается в функцию в виде строки или объекта JSON.
Функции также поддерживают привязки типов пакета SDK Python для Служебная шина Azure, что позволяет работать с данными с помощью этих базовых типов ПАКЕТА SDK:
Внимание
Поддержка типов пакета SDK служебная шина в Python доступна в предварительной версии и поддерживается только для модели программирования Python версии 2. Дополнительные сведения см. в разделе SDK типов в Python.
Полный пример см. в разделе Примеры.
Связи
Свойство connection ссылается на конфигурацию среды, которая указывает, как приложение подключается к служебная шина. Он может указать следующее:
- Имя параметра приложения, содержащего строка подключения.
- Имя общего префикса для нескольких параметров приложения, которые вместе определяют подключение к управляемому удостоверению.
Если настроенное значение одновременно точно соответствует одному параметру и является префиксом для других параметров, то используется точное совпадение.
Подсказка
Используйте подключения управляемых удостоверений вместо строк подключения для повышения безопасности. Строки подключения включают учетные данные, которые могут быть предоставлены, а управляемые удостоверения устраняют необходимость управления секретами.
Если вы используете version 5.x или более поздней версии расширения вместо использования строка подключения с секретом, приложение может использовать удостоверение Microsoft Entra. Чтобы использовать управляемые удостоверения, определите параметры под общим префиксом, который сопоставляется со connection свойством в конфигурации триггера и привязки.
В этом режиме расширение требует следующих параметров приложения:
| Параметр на основе шаблона | Описание | Тип идентификации |
|---|---|---|
<CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace |
Полное пространство имен служебная шина. | Назначаемое системой или назначаемое пользователем |
<CONNECTION_NAME_PREFIX>__credential |
Должен иметь значениеmanagedidentity. |
Назначено пользователем |
<CONNECTION_NAME_PREFIX>__clientId |
Идентификатор клиента управляемой идентификации, назначаемой пользователем. | Назначено пользователем |
Значение, которое вы заменяете <CONNECTION_NAME_PREFIX> , обрабатывается расширением привязки в качестве имени параметра подключения.
Например, если конфигурация привязки задает connection = "ServiceBusConnection" управляемое удостоверение, назначаемое пользователем, настройте следующие параметры приложения:
{
"ServiceBusConnection__fullyQualifiedNamespace": "myservicebus.servicebus.windows.net",
"ServiceBusConnection__credential": "managedidentity",
"ServiceBusConnection__clientId": "00000000-0000-0000-0000-000000000000"
}
Подсказка
Используйте управляемые удостоверения, назначаемые пользователем, для рабочих сценариев, где требуется подробный контроль над разрешениями удостоверения в нескольких ресурсах.
Для дальнейшей настройки подключения можно использовать другие параметры в шаблоне. См. раздел Общие свойства подключений на основе удостоверений.
Примечание.
При использовании Конфигурация приложений Azure или Key Vault для предоставления параметров для подключений к управляемому удостоверению имена должны использовать допустимый разделитель ключей, например : или / вместо __, чтобы обеспечить правильное разрешение имен.
Например: ServiceBusConnection:fullyQualifiedNamespace
При размещении в службе Функции Azure подключения на основе удостоверений используют удостоверение управляемое удостоверение. По умолчанию используется назначаемое системой удостоверение, однако вы можете указать назначаемое пользователем удостоверение с помощью свойств credential и clientID. Обратите внимание, что настройка назначаемого пользователем удостоверения с идентификатором ресурса не поддерживается. При выполнении в других контекстах, например при локальной разработке, вместо этого используется удостоверение разработчика, хотя это можно настроить. См. раздел Локальная разработка с использованием подключений на основе удостоверений.
Предоставление разрешения удостоверению
Любое используемое удостоверение должно иметь разрешения на выполнение предполагаемых действий. Для большинства служб Azure это означает, что необходимо назначение роли в Azure RBAC с помощью встроенных или настраиваемых ролей, которые предоставляют эти разрешения.
Внимание
Иногда целевая служба может предоставлять разрешения, которые не являются обязательными для всех контекстов. Там, где это возможно, придерживайтесь принципа минимальных привилегий, предоставляя удостоверению лишь самые необходимые привилегии. Например, если приложению требуется только возможность чтения из источника данных, используйте роль, которая имеет разрешение только на чтение. Было бы неуместным назначить роль, которая также разрешает запись в эту службу, так как это разрешение не требуется для операции чтения. Соответственно необходимо еще проверить, что область действия назначенной роли ограничена только теми ресурсами, которые необходимо прочитать.
Вам потребуется создать назначение ролей, которое предоставляет доступ к темам и очередям во время выполнения. Ролей управления, таких как Владелец, недостаточно. В следующей таблице показаны встроенные роли, которые рекомендуется использовать при использовании расширения служебная шина в обычной операции. Приложению могут потребоваться дополнительные разрешения в зависимости от написанного кода.
| Тип привязки | Примеры встроенных ролей |
|---|---|
| Триггер1 | Служебная шина Azure приемник данных, Служебная шина Azure владелец данных |
| Выходные привязки | Служебная шина Azure Отправитель данных |
1 Для активации из служебная шина разделов назначение ролей должно иметь эффективную область действия над ресурсом подписки служебная шина. Если включен только раздел, отобразится ошибка. Некоторые клиенты, такие как портал Azure, не предоставляют ресурс подписки служебная шина в качестве области назначения ролей. В таких случаях вместо этого можно использовать Azure CLI. Дополнительные сведения см. в статье Azure встроенные роли для Служебная шина Azure.
Сообщения о сбое
Обработка подозрительных сообщений не может быть управляемой или настроенной в Функции Azure. служебная шина обрабатывает сам ядовитые сообщения.
Поведение peekLock
Среда выполнения службы "Функции" получает сообщение в режиме PeekLock.
По умолчанию среда выполнения вызывает Complete сообщение, если функция завершается успешно или вызывается Abandon , если функция завершается сбоем. Вы можете отключить автоматическое завершение с помощью autoCompleteMessages свойства в host.json.
По умолчанию среда выполнения вызывает Complete сообщение, если функция завершается успешно или вызывается Abandon , если функция завершается сбоем. Вы можете отключить автоматическое завершение с autoCompleteMessages помощью свойства в host.json атрибуте триггера или через свойство. Вы должны отключить автоматическое завершение, если код функции обрабатывает урегулирование сообщений.
Если функция выполняется дольше времени ожидания PeekLock, блокировка возобновляется автоматически до тех пор, пока выполняется функция. Этот maxAutoRenewDuration параметр можно настроить в host.json, который сопоставляется с ServiceBusProcessor.MaxAutoLockRenewalDuration. Значение по умолчанию этого параметра составляет 5 минут.
Метаданные сообщения
Типы, относящиеся к обмену сообщениями, позволяют легко извлекать метаданные как свойства объекта. Эти свойства зависят от версии среды выполнения Функций, версии пакета расширения и используемой модальности C#.
Эти свойства являются членами класса ServiceBusReceivedMessage.
| Свойство | Тип | Описание |
|---|---|---|
ApplicationProperties |
ApplicationProperties |
Свойства, заданные отправителем. |
ContentType |
string |
Идентификатор типа содержимого, используемый отправителем и получателем для логики конкретного приложения. |
CorrelationId |
string |
Идентификатор корреляции. |
DeliveryCount |
Int32 |
Число доставок. |
EnqueuedTime |
DateTime |
Время попадания в очередь в формате UTC. |
ScheduledEnqueueTimeUtc |
DateTime |
Время планового попадания в очередь в формате UTC. |
ExpiresAt |
DateTime |
Время окончания срока действия в формате UTC. |
MessageId |
string |
Определяемое пользователем значение, которое служебная шина может использовать для идентификации повторяющихся сообщений, если оно включено. |
ReplyTo |
string |
Адрес очереди для ответа. |
Subject |
string |
Метка для приложения, которую можно использовать вместо свойства метаданных Label. |
To |
string |
Адрес для отправки. |