Envío de un mensaje al tema de publicación/suscripción

SE APLICA A: Desarrollador | Premium

La directiva publish-to-dapr indica a la puerta de enlace de API Management que envíe un mensaje a un tema de publicación/suscripción de Dapr. Para ello, la directiva realiza una solicitud HTTP POST a http://localhost:3500/v1.0/publish/{{pubsub-name}}/{{topic}} reemplazando los parámetros de la plantilla y agregando el contenido especificado en la instrucción de directiva.

La directiva presupone que el entorno de ejecución de Dapr se está ejecutando en un contenedor sidecar situado en el mismo pod que la puerta de enlace. El entorno de ejecución de Dapr implementa la semántica de publicación/suscripción. Obtenga más información sobre la integración de Dapr con API Management.

Nota:

Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.

Instrucción de la directiva

<publish-to-dapr pubsub-name="pubsub-name" topic="topic-name" ignore-error="false|true" response-variable-name="resp-var-name" timeout="in seconds" template="Liquid" content-type="application/json">
    <!-- message content -->
</publish-to-dapr>

Atributos

Atributo Descripción Necesario Valor predeterminado
pubsub-name Nombre del componente PubSub de destino. Se asigna al parámetro pubsubname de Dapr. Si no está presente, el valor del atributo topic debe tener el formato pubsub-name/topic-name. Se permiten expresiones de directiva. No None
topic El nombre del tema. Se asigna al parámetro topic de Dapr. Se permiten expresiones de directiva. N/D
ignore-error Si se establece en true, indica a la directiva que no desencadene la sección "on-error" tras recibir un error del entorno de ejecución de Dapr. No se permiten expresiones de directiva. No false
response-variable-name Nombre de la entrada de la colección Variables que se va a usar para almacenar la respuesta del entorno de ejecución de Dapr. No se permiten expresiones de directiva. No None
timeout Tiempo (en segundos) que se debe esperar a que responda el entorno de ejecución de Dapr. Puede oscilar entre 1 y 240 segundos. Se permiten expresiones de directiva. No 5
template Motor de creación de plantillas que se usa para transformar el contenido del mensaje. "Liquid" es el único valor admitido. No None
content-type Tipo de contenido del mensaje. "application/json" es el único valor admitido. No None

Uso

Notas de uso

La compatibilidad con Dapr debe estar habilitada en la puerta de enlace autohospedada.

Ejemplo

En el ejemplo siguiente, se muestra cómo se envía el cuerpo de la solicitud actual al tema "new" del componente de publicación/suscripción de "orders". La respuesta que se recibe del entorno de ejecución de Dapr se almacena en la entrada "dapr-response" de la colección Variables del objeto context.

Si, por ejemplo, el entorno de ejecución de Dapr no encuentra el tema de destino y responde con un error, se desencadena la sección "on-error". La respuesta que se recibe del entorno de ejecución de Dapr se devuelve literalmente al autor de la llamada. De lo contrario, se devuelve la respuesta predeterminada: 200 OK.

La sección "backend" está vacía y la solicitud no se reenvía al back-end.

<policies>
     <inbound>
        <base />
        <publish-to-dapr
           pubsub-name="orders"
               topic="new"
               response-variable-name="dapr-response">
            @(context.Request.Body.As<string>())
        </publish-to-dapr>
    </inbound>
    <backend>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <return-response response-variable-name="pubsub-response" />
    </on-error>
</policies>

Para más información sobre el trabajo con directivas, vea: