Отправка сообщения служебной шины

ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Стандартный | Премия

Политика send-service-bus-message отправляет сообщение в очередь или раздел служебной шины Azure. Вы можете по желанию переслать запрос API на сервер.

Замечание

Замечание

Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.

Правило политики

<send-service-bus-message 
    queue-name="service bus queue"
    topic-name="service bus topic"
    namespace="FQDN of service bus namespace"
    client-id="ID of user-assigned managed identity"
    message-id="message ID"
    session-id="session ID"
    time-to-live="message time to live"
    response-variable-name="context variable name"
    ignore-error="false">
        <message-properties>
                <message-property name="property-name">property-value</message-property>
                <!-- if there are multiple properties, then add additional message-property elements -->
        </message-properties>
        <payload>"message content"</payload>
</send-service-bus-message>

Attributes

Свойство Description Обязательно По умолчанию
queue-name Указывает имя очереди служебной шины для отправки сообщения. Допустимы выражения политики и именованные значения. queue-name Необходимо указать либоtopic-name. нет N/A
topic-name Указывает имя раздела служебной шины для отправки сообщения. Допустимы выражения политики и именованные значения. queue-name Необходимо указать либоtopic-name. нет N/A
namespace Указывает полное доменное имя пространства имен служебной шины. Допустимы выражения политики и именованные значения. нет N/A
client-id Указывает идентификатор клиента управляемого удостоверения, назначаемого пользователем, для проверки подлинности с помощью служебной шины. Удостоверение должно быть назначено роли отправителя данных служебной шины Azure. Допустимы выражения политики и именованные значения. Если вы не указываете этот атрибут, используется системная идентичность. нет N/A
message-id Идентификатор сообщения. Должен быть корректным GUID. Допустимы выражения политики. Если его опускать, API Management генерирует GUID. нет Генерируемый GUID
session-id Идентификатор сессии служебная шина, используемый для группировки связанных сообщений. Должен быть корректным GUID. Допустимы выражения политики. нет N/A
time-to-live Как долго сообщение остаётся доступным для обработки до истечения срока действия. Используйте значение TimeSpan, например 00:10:00. нет N/A
response-variable-name Название контекстной переменной, которая получает информацию об операции отправки служебная шина. нет N/A
ignore-error Вопрос о том, что сбой отправки служебная шина, должен позволять выполнению политики продолжаться. true = продолжить; false = вызвать обычную обработку ошибок. нет false

Замечание

Когда вы указываете response-variable-name, API Management хранит информацию об операции отправки служебная шина в этой контекстной переменной. При успехе он содержит MessageId, SessionId, и TimeToLive. При ошибке отправки без внимания он содержит Error.Reason и Error.Message.

Elements

Элемент Description Обязательно
payload Указывает полезные данные сообщения для отправки в служебную шину. Допустимы выражения политики и именованные значения. Да
message-properties Коллекция вложенных message-property элементов, которые указывают метаданные для передачи полезных данных сообщения. Каждая из них message-property состоит из пары "имя-значение". Допустимы выражения политики и именованные значения. нет

Usage

Заметки об использовании

  • Необходимо предварительно создать очередь или раздел служебной шины Azure, который получает сообщение.
  • Эту политику можно использовать несколько раз на определение политики.
  • Если вы его message-idпропустите, API Management генерирует GUID.
  • Настройки message-id и session-id значения должны быть действительными GUID.
  • Используйте session-id тогда, когда сущность служебная шина требует сессий.
  • time-to-live использует TimeSpan значение, такое как 00:10:00.
  • ignore-error применяется к ошибкам отправки. Неправильная конфигурация сообщений, такая как некорректный GUID или TTL, всё равно вызывает сбой политики.

Примеры

Отправка сообщения в очередь служебной шины

В этом примере в очередь заказов отправляется сообщение, состоящее из тела запроса. ID запроса становится идентификатором сообщения, сообщение истекает через 10 минут, и информация о отправке сохраняется в serviceBusResult. Ошибка отправки вызывает обработку ошибок управления API. Экземпляр управления API использует удостоверение, назначаемое пользователем, для доступа. Затем запрос перенаправляется в серверную службу.

<policies>
    <inbound>
        <send-service-bus-message 
          queue-name="orders"
          namespace="contoso-messaging.servicebus.windows.net"
          message-id="@(context.RequestId.ToString())"
          time-to-live="00:10:00"
          response-variable-name="serviceBusResult"
          ignore-error="false">
          <payload>
            @(context.Request.Body.As<string>(preserveContent: true))
          </payload>
        </send-service-bus-message>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
</policies>

Отправка сообщения в раздел служебной шины

В этом примере вы отправляете сообщение с телом запроса в тему сервисной шины. Экземпляр управления API использует назначаемое системой удостоверение для доступа. Затем вы пересылаете запрос в бэкенд-сервис.

<policies>
    <inbound>
        <send-service-bus-message topic-name="orders" namespace="my-service-bus.servicebus.windows.net">
           <payload>@(context.Request.Body.As<string>(preserveContent: true))</payload>
        </send-service-bus-message>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
</policies>

Отправка сообщения и метаданных

В этом примере вы отправляете сообщение с телом запроса в тему сервисной шины и устанавливаете свойство сообщения для отправки метаданных с полезной нагрузкой. Экземпляр управления API использует назначаемое системой удостоверение для доступа. Затем вы пересылаете запрос в бэкенд-сервис.

<policies>
    <inbound>
        <send-service-bus-message topic-name="orders" namespace="my-service-bus.servicebus.windows.net">
           <message-properties>
              <message-property name="Customer">Contoso</message-property>
           </message-properties>
           <payload>@(context.Request.Body.As<string>(preserveContent: true))</payload>
        </send-service-bus-message>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
</policies>

Отправка сообщения и возврат немедленно

В этом примере вы отправляете сообщение с телом запроса в тему сервисной шины. Экземпляр управления API использует назначаемое системой удостоверение для доступа. Затем вы сразу же возвращаете 201 код статуса ответа звонящему.

<policies>
    <inbound>
        <send-service-bus-message topic-name="orders" namespace="my-service-bus.servicebus.windows.net">
           <payload>@(context.Request.Body.As<string>(preserveContent: true))</payload>
        </send-service-bus-message>
        <return-response>
            <set-status code="201" reason="Created!" />
        </return-response>
    </inbound>
</policies>

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.