Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте триггер служебная шина для реагирования на сообщения из очереди или раздела служебная шина. Начиная с версии расширения 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)
В следующем примере показана функция триггера очереди Служебная шина Azure, которая регистрирует входящие сообщения:
package main
import (
"context"
"log"
"github.com/azure/azure-functions-golang-worker/sdk"
"github.com/azure/azure-functions-golang-worker/sdk/bindings"
"github.com/azure/azure-functions-golang-worker/worker"
)
func main() {
app := sdk.FunctionApp()
app.ServiceBusQueue("serviceBusQueueTrigger", processMessage,
sdk.WithQueueName("myqueue"),
sdk.WithConnection("ServiceBusConnection"),
)
worker.Start(app)
}
func processMessage(ctx context.Context, msg bindings.ServiceBusMessage) error {
log.Printf("Service Bus queue trigger processed message: %s", msg.Body)
log.Printf("Message ID: %s", msg.MessageId)
return nil
}
Атрибуты
Библиотеки 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 runtime Functions для подключения к экземпляру служебная шина, используемому расширением. Значение настройки свойств соединения зависит от типа соединения:
-
Управляемое идентификационное соединение: свойство
connectionявляется<CONNECTION_NAME_PREFIX>общим для группы настроек, которые вместе определяют соединение на основе идентичности с служебная шина. Для получения дополнительной информации см. раздел «Определить идентичные связи». -
Key Vault reference:
connectionНастройка свойств возвращает ссылку на Azure Key Vault на место, где централизованно поддерживается строка подключения. Для получения дополнительной информации смотрите раздел Define Key Vault connections. -
App Configuration reference:
connectionНастройка свойства возвращает ссылку на Конфигурация приложений Azure, которая возвращает строка подключения или ссылку на Key Vault. Для получения дополнительной информации см. Конфигурация приложений Azure в статье о соединениях. -
Connection string: Настройка
connectionсвойств возвращает фактическую строка подключения для экземпляра служебная шина. Поскольку строка строка подключения содержит общие секретные ключи, следует рассмотреть возможность использования управляемого идентификатора соединения, если это возможно. Для получения дополнительной информации см. раздел «Определить соединения».
Чтобы узнать больше о соединениях связей, см. раздел «Управление соединением в Функции Azure».
Чтобы получить строку подключения, следуйте инструкциям, указанным в разделе Получение учетных данных управления. Строка подключения указывается для пространства имен служебной шины, и она не должна ограничиваться определенной очередью или разделом.
Если название настройки приложения начинается с AzureWebJobs, вы можете указать только оставшуюся часть имени. Например, если задано connectionMyServiceBusзначение, среда выполнения функций ищет параметр приложения с именем AzureWebJobsMyServiceBus. Если оставить connection пустым, в Functions runtime используется стандартный служебная шина строка подключения в настройках приложения, который называется AzureWebJobsServiceBus.
Разрешения масштабирования
Расширение служебная шина использует API служебная шина Administration (GetQueueRuntimePropertiesAsync / GetSubscriptionRuntimePropertiesAsync) для получения точного количества сообщений при принятии масштабных решений. Этот API требует дополнительных разрешений, выходящих за рамки необходимых для отправки или получения сообщений:
- Строки подключения SAS: Политика SAS должна включать право Управление доступом.
-
Соединения на основе идентичности: идентичность должна быть назначена ролью владельца данных Служебная шина Azure или пользовательской роли, включающей
Microsoft.ServiceBus/namespaces/*/read.
Когда соединение отсутствует этих разрешений, вы не видите ошибок при запуске. Вместо этого расширение молча возвращается к использованию оценки сообщений на основе peek, что менее точно и может привести к задержке или неправильным решениям по масштабированию.
Подсказка
Для производственных нагрузок, основанных на автомасштабировании, включите право на управление доступом (SAS) или назначьте роль Azure Service Bus Data Owner (соединения на основе идентификации) для обеспечения точного масштабирования. строка подключения в настройках приложения, которая называется AzureWebJobsServiceBus.
Сообщения о сбое
Обработка подозрительных сообщений не может быть управляемой или настроенной в Функции 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 |
Адрес для отправки. |