Enviar mensaje de Service Bus

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:

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.
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

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-id y session-id deben ser GUIDs válidos.
  • Úsalo session-id cuando la entidad Service Bus requiera sesiones.
  • time-to-live utiliza un TimeSpan valor como 00:10:00.
  • ignore-error Se 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>

Para obtener más información sobre cómo trabajar con directivas, consulte: