Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A: Developer | Básico | Estándar | Prima
La send-service-bus-message directiva envía un mensaje a una cola o tema de Azure Service Bus. Opcionalmente, puedes reenviar la solicitud de API al servicio de backend.
Nota:
- Para conocer los requisitos previos y en segundo plano para enviar mensajes a Azure Service Bus, consulte Envío de mensajes a Azure Service Bus desde Azure API Management.
Nota:
Establezca los elementos de la política y sus elementos secundarios en el orden proporcionado en la declaración de política. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.
Declaración de política
<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
| Atributo | Description | Obligatorio | Predeterminado |
|---|---|---|---|
queue-name |
Especifica el nombre de la cola de Service Bus a la que se va a enviar el mensaje. Se permiten expresiones de directiva y valores con nombre. Se debe especificar o queue-nametopic-name . |
No | N/A |
topic-name |
Especifica el nombre del tema de Service Bus al que se va a enviar el mensaje. Se permiten expresiones de directiva y valores con nombre. Se debe especificar o queue-nametopic-name . |
No | N/A |
namespace |
Especifica el nombre de dominio completo del espacio de nombres de Service Bus. Se permiten expresiones de directiva y valores con nombre. | No | N/A |
client-id |
Especifica el identificador de cliente de la identidad administrada asignada por el usuario para autenticarse con Service Bus. A la identidad se le debe asignar el rol Remitente de datos de Azure Service Bus. Se permiten expresiones de directiva y valores con nombre. Si no especificas este atributo, se utiliza la identidad asignada por el sistema. | No | N/A |
message-id |
Identificador de mensaje. Debe ser un GUID válido. Se permiten expresiones de directiva. Si se omite, la Gestión de API genera una GUID. | No | GUID generado |
session-id |
Identificador de sesión del Service Bus utilizado para agrupar mensajes relacionados. Debe ser un GUID válido. Se permiten expresiones de directiva. | No | N/A |
time-to-live |
Cuánto tiempo permanece disponible el mensaje para su procesamiento antes de que expire. Utiliza un valor TimeSpan, por 00:10:00ejemplo . |
No | N/A |
response-variable-name |
Nombre de una variable de contexto que recibe información sobre la operación de envío del Service Bus. | No | N/A |
ignore-error |
Si un fallo de envío de Service Bus debería permitir que la ejecución de la política continúe.
true = continuar; false = invocar el manejo normal de errores. |
No | false |
Nota:
Cuando especificas response-variable-name, API Management almacena información sobre la operación de envío del Service Bus en esa variable de contexto. En caso de éxito, contiene MessageId, SessionId, y TimeToLive. En caso de fallo de envío ignorado, contiene Error.Reason y Error.Message.
Elements
| Elemento | Description | Obligatorio |
|---|---|---|
payload |
Especifica la carga del mensaje que se va a enviar al bus de servicio. Se permiten expresiones de directiva y valores con nombre. | Sí |
message-properties |
Colección de message-property subelementos que especifican los metadatos que se van a pasar con la carga del mensaje. Cada message-property uno consta de un par nombre-valor. Se permiten expresiones de directiva y valores con nombre. |
No |
Usage
- Secciones de directiva: entrantes, salientes y en error
- Ámbitos de la directiva: global, producto, API y operación
- Puertas de enlace: clásicas
Notas de uso
- Debe crear previamente la cola o el tema de Azure Service Bus que recibe un mensaje.
- Puede usar esta directiva varias veces por definición de directiva.
- Si omites
message-id, API Management genera una interfaz gráfica. - Los valores configurados
message-idysession-iddeben ser GUIDs válidos. - Úsalo
session-idcuando la entidad Service Bus requiera sesiones. -
time-to-liveutiliza unTimeSpanvalor como00:10:00. -
ignore-errorSe aplica a fallos de envío. La configuración de mensajes inválida, como un GUID o TTL inválidos, sigue causando fallos en la política.
Examples
Envío de un mensaje a una cola de Service Bus
En este ejemplo, se envía un mensaje que consiste en el cuerpo de la solicitud a la cola de órdenes. El ID de la solicitud se convierte en el ID del mensaje, el mensaje expira tras 10 minutos y la información de envío se almacena en serviceBusResult. Un fallo de envío provoca el manejo de errores de la gestión de API. La instancia de API Management usa una identidad asignada por el usuario para el acceso. A continuación, la solicitud se reenvía al servicio back-end.
<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>
Envío de un mensaje a un tema de Service Bus
En este ejemplo, envías un mensaje que contiene el cuerpo de la solicitud a un tema del bus de servicio. La instancia de API Management usa una identidad asignada por el sistema para el acceso. Luego, reenvías la solicitud al servicio de backend.
<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>
Enviar un mensaje y metadatos
En este ejemplo, envías un mensaje que contiene el cuerpo de la solicitud a un tema del bus de servicio y estableces una propiedad de mensaje para enviar metadatos con la carga útil. La instancia de API Management usa una identidad asignada por el sistema para el acceso. Luego, reenvías la solicitud al servicio de backend.
<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>
Enviar mensaje y devolver inmediatamente
En este ejemplo, envías un mensaje que contiene el cuerpo de la solicitud a un tema del bus de servicio. La instancia de API Management usa una identidad asignada por el sistema para el acceso. Luego, devuelves inmediatamente un 201 código de estado de respuesta al llamante.
<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>
Directivas relacionadas
Contenido relacionado
Para obtener más información sobre cómo trabajar con directivas, consulte:
- Tutorial: Transformación y protección de una API
- Referencia de políticas para una lista completa de declaraciones de políticas y su configuración
- Expresiones de política
- Establecimiento o edición de directivas
- Reutilizar configuraciones de directivas
- Repositorio de fragmentos de código de directiva
- repositorio de ejemplos Policy
- Conjunto de políticas de Azure API Management
- Obtener ayuda de Copilot para crear, explicar y solucionar problemas de directivas