Триггер Служебной шины Azure для службы "Функции Azure"

Используйте триггер служебной шины для ответа на сообщения из очереди или раздела служебной шины. Начиная с версии расширения 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 Framework. Расширения для изолированных рабочих процессов используют Microsoft.Azure.Functions.Worker.Extensions.* пространства имен.
  • Модель внутрипроцессного процесса: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций. В варианте этой модели функции можно запускать с помощью скриптов C#, которая поддерживается главным образом для редактирования портала C#. Расширения для функций в процессе используют Microsoft.Azure.WebJobs.Extensions.* пространства имен.

Этот код определяет и инициализирует 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);
    }

В следующем примере показана функция триггера TypeScript служебная шина. Функция считывает метаданные сообщения и заносит в журнал сообщение из очереди службы "Служебная шина".

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. Функция считывает метаданные сообщения и заносит в журнал сообщение из очереди службы "Служебная шина".

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 и функция PowerShell, которая использует эту привязку.

Данные привязки в файле 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"

В следующем примере показано, как прочитать сообщение очереди Служебной шины через триггер. Пример зависит от того, используется ли модель программирования Python версии 1 или версии 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)

Атрибуты

Библиотеки C# в процессе и изолированном рабочем процессе используют атрибут ServiceBusTriggerAttribute для определения триггера функции. Вместо этого скрипт C# использует файл конфигурации function.json, как описано в руководстве по скриптам C#.

В следующей таблице описаны свойства, которые можно задать с помощью этого атрибута триггера:

Свойство Description
QueueName Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел.
TopicName Имя отслеживаемого раздела. Задается только в том случае, если отслеживается раздел, но не очередь.
Параметр SubscriptionName Имя отслеживаемой подписки. Задается только в том случае, если отслеживается раздел, но не очередь.
Соединение Имя параметра или коллекции параметров приложения, указывающих, как подключиться к служебной шине. См. раздел Подключения.
IsBatched Сообщения доставляются пакетами. Требуется массив или тип коллекции.
IsSessionsEnabled true при подключении к очереди или подписке с поддержкой сеансов. false в противном случае (значение по умолчанию).
АвтозавершениеMessages true Значение , если триггер должен автоматически завершить сообщение после успешного вызова. false Если это не должно быть, например при обработке урегулирования сообщений в коде. Если оно не задано явным образом, поведение будет основано на конфигурации в host.json.autoCompleteMessages

Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.

Декораторы

Применяется только к модели программирования Python версии 2.

Для функций Python версии 2, определенных с помощью декоратора, в следующих свойствах service_bus_queue_trigger:

Свойство Description
arg_name Имя переменной, представляющей сообщение очереди или раздела в коде функции.
queue_name Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел.
connection Имя параметра или коллекции параметров приложения, указывающих, как подключиться к служебной шине. См. раздел Подключения.

Сведения о функциях Python, определенных с помощью function.json, см. в разделе "Конфигурация ".

Заметки

Заметка ServiceBusQueueTrigger позволяет создать функцию, которая выполняется при создании сообщения очереди Служебной шины. Доступные параметры конфигурации включают следующие свойства:

Свойство Описание
name Имя переменной, представляющей сообщение очереди или раздела в коде функции.
queueName Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел.
topicName Имя отслеживаемого раздела. Задается только в том случае, если отслеживается раздел, но не очередь.
subscriptionName Имя отслеживаемой подписки. Задается только в том случае, если отслеживается раздел, но не очередь.
Подключение Имя параметра или коллекции параметров приложения, указывающих, как подключиться к служебной шине. См. раздел Подключения.

Заметка ServiceBusTopicTrigger позволяет назначить раздел и подписку, чтобы указать, какие данные активируют функцию.

Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.

Дополнительные сведения см. в этом примере триггера.

Настройка

Применяется только к модели программирования Python версии 1.

В следующей таблице описываются свойства, которые можно задать для объекта, переданного optionsapp.serviceBusQueue() в методы или app.serviceBusTopic() методы.

Свойство Description
queueName Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел.
topicName Имя отслеживаемого раздела. Задается только в том случае, если отслеживается раздел, но не очередь.
subscriptionName Имя отслеживаемой подписки. Задается только в том случае, если отслеживается раздел, но не очередь.
Подключение Имя параметра или коллекции параметров приложения, указывающих, как подключиться к служебной шине. См. раздел Подключения.
accessRights Права доступа для строки подключения. Доступные значения: manage и listen. Значение по умолчанию — manage. Это означает, что у свойства connection есть разрешение на управление. При использовании строки подключения без разрешения на управление задайте для свойства accessRights значение "listen". В противном случае выполнение операций, для которых требуются права на управление, в среде выполнения Функций Azure может завершиться ошибкой. В Функциях Azure версии 2.x и более поздних это свойство недоступно, так как последняя версия пакета SDK Служебной шины не поддерживает операции управления.
isSessionsEnabled true при подключении к очереди или подписке с поддержкой сеансов. false в противном случае (значение по умолчанию).
autoComplete Должен быть равен true для функций, отличных от C#, это означает, что триггер должен вызываться автоматически после обработки в противном случае код функции вызывает завершение вручную.

Если установлено значение true, триггер автоматически завершает обработку сообщения, если выполнение функции завершается успешно, в противном случае прерывает обработку сообщения.

Исключения в функции приводят к тому, что среда выполнения вызывает abandonAsync в фоновом режиме. Если исключение не возникает, completeAsync вызывается в фоновом режиме. Это свойство доступно только в Функциях Azure 2.x и более поздних версий.

Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.

В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json.

Свойство в function.json Описание
type Должен иметь значениеserviceBusTrigger. Это свойство задается автоматически при создании триггера на портале Azure.
direction Для этого свойства необходимо задать значение "in". Это свойство задается автоматически при создании триггера на портале Azure.
name Имя переменной, представляющей сообщение очереди или раздела в коде функции.
queueName Имя очереди для отслеживания. Задается только в том случае, если отслеживается очередь, но не раздел.
topicName Имя отслеживаемого раздела. Задается только в том случае, если отслеживается раздел, но не очередь.
subscriptionName Имя отслеживаемой подписки. Задается только в том случае, если отслеживается раздел, но не очередь.
Подключение Имя параметра или коллекции параметров приложения, указывающих, как подключиться к служебной шине. См. раздел Подключения.
accessRights Права доступа для строки подключения. Доступные значения: manage и listen. Значение по умолчанию — manage. Это означает, что у свойства connection есть разрешение на управление. При использовании строки подключения без разрешения на управление задайте для свойства accessRights значение "listen". В противном случае выполнение операций, для которых требуются права на управление, в среде выполнения Функций Azure может завершиться ошибкой. В Функциях Azure версии 2.x и более поздних это свойство недоступно, так как последняя версия пакета SDK Служебной шины не поддерживает операции управления.
isSessionsEnabled true при подключении к очереди или подписке с поддержкой сеансов. false в противном случае (значение по умолчанию).
autoComplete Должен быть равен 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 Объект сообщения.

При привязке ServiceBusReceivedMessageк ней можно также включить параметр типа ServiceBusMessageActions1,2 для выполнения действий по урегулированию сообщений.

Если требуется, чтобы функция обрабатывала пакет сообщений, триггер служебная шина может привязаться к следующим типам:

Тип Описание
T[] где T является одним из типов одного сообщения Массив событий из пакета. Каждая запись представляет одно событие.

При привязке ServiceBusReceivedMessage[]к ней можно также включить параметр типа ServiceBusMessageActions1,2 для выполнения действий по урегулированию сообщений.

1 Для использования этих типов необходимо ссылаться на Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 или более поздней версии и общие зависимости для привязок типов ПАКЕТА SDK.

2 При использовании ServiceBusMessageActionsзадайте AutoCompleteMessages для свойства атрибута триггера значение false. Это предотвращает попытку выполнения сообщений после успешного вызова функции.

Так как свойство Connection не определено, служба "Функции" ищет параметр приложения с именем AzureWebJobsServiceBus, который является именем по умолчанию для строки подключения служебной шины. Можно также задать свойство Connection, чтобы указать имя параметра приложения, содержащего строку подключения служебной шины, которую необходимо использовать.

Входящее сообщение служебной шины доступно через параметр ServiceBusQueueMessage или ServiceBusTopicMessage.

Доступ к сообщению очереди или раздела в качестве первого аргумента функции. Сообщение служебной шины передается в функцию в качестве строки или объекта JSON.

Экземпляр Служебной шины доступен через параметр, который настраивается в свойстве имени файла function.json.

Сообщение очереди доступно функции через параметр, типизированный как func.ServiceBusMessage. Сообщение служебной шины передается в функцию в качестве строки или объекта JSON.

Полный пример см. в разделе Примеры.

Связи

Свойство connection является ссылкой на конфигурацию среды, которая указывает, как приложение должно подключаться к служебной шине. В данном свойстве может быть указано:

Если настроенное значение одновременно точно соответствует одному параметру и является префиксом для других параметров, то используется точное совпадение.

Connection string

Чтобы получить строку подключения, следуйте инструкциям, указанным в разделе Получение учетных данных управления. Строка подключения указывается для пространства имен служебной шины, и она не должна ограничиваться определенной очередью или разделом.

Эта строка подключения должна храниться в параметре приложения с именем, соответствующим значению, которое указано свойством connection конфигурации привязки.

Если имя параметра приложения начинается с AzureWebJobs, можно указать только остальную часть имени. Например, если задать для connection значение MyServiceBus, то среда выполнения Функций Azure будет искать параметр приложения AzureWebJobsMyServiceBus. Если оставить строку connection пустой, то среда выполнения службы "Функции" будет использовать строку подключения к служебной шине по умолчанию для параметра приложения AzureWebJobsServiceBus.

Подключения на основе удостоверений

Если вы используете расширение версии 5.x или выше, вместо использования строка подключения с секретом, вы можете использовать удостоверение Microsoft Entra. Для этого необходимо определить параметры под общим префиксом, который соответствует свойству connection в конфигурации триггера и привязки.

В этом режиме для расширения требуются следующие свойства:

Свойство Шаблон переменной среды Description Пример значения
Пространство полных имен <CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace Полное пространство имен служебной шины. <пространство_имен_служебной шины>.servicebus.windows.net

Для настройки подключения можно задать дополнительные свойства. См. раздел Общие свойства подключений на основе удостоверений.

Примечание.

При использовании Конфигурации приложений Azure или Key Vault для предоставления параметров подключений Управляемого удостоверения имена параметров должны использовать допустимый разделитель ключей, например : или /, вместо __, чтобы обеспечить правильное разрешение имен.

Например, <CONNECTION_NAME_PREFIX>: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.

Свойство Type Описание
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 Адрес для отправки.

Следующие шаги