Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Стандартный | Премия
Политика send-service-bus-message отправляет сообщение в очередь или раздел служебной шины Azure. Вы можете по желанию переслать запрос API на сервер.
Замечание
- Фоновые и предварительные требования для отправки сообщений в служебную шину Azure см. в статье "Отправка сообщений в служебную шину Azure" из службы "Управление API Azure".
Замечание
Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления 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
- Разделы политики: входящий, исходящий, исходящий, по ошибке
- Области политики: global, product, API, operation.
- Шлюзы: классические
Заметки об использовании
- Необходимо предварительно создать очередь или раздел служебной шины 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>
Связанные политики
Связанный контент
Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.
- Руководство: Преобразуйте и защитите ваш API
- Полный перечень заявлений о политике и их параметров см. в справочнике политик.
- Выражения политики
- Настройка или изменение политик
- Повторное использование конфигураций политик
- Репозиторий фрагментов политик
- репозиторий Policy
- Набор средств для управления политиками API Azure
- Получите помощь Copilot для создания, объяснения и устранения неполадок в политике