Inviare un messaggio del bus di servizio

SI APPLICA A: Sviluppatore | Basic | Standard | Premium

Il send-service-bus-message criterio invia un messaggio a una coda o a un argomento del bus di servizio di Azure. Puoi opzionalmente inoltrare la richiesta API al servizio backend.

Annotazioni

Annotazioni

Impostare gli elementi e gli elementi figlio del criterio nell'ordine specificato nell'istruzione del criterio. Altre informazioni su come impostare o modificare i criteri di Gestione API.

Istruzione del criterio

<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

Attribute Description Obbligatorio Impostazione predefinita
queue-name Specifica il nome della coda del bus di servizio a cui inviare il messaggio. Sono consentite espressioni di criteri e valori denominati. È queue-name necessario specificare o topic-name . NO N/A
topic-name Specifica il nome dell'argomento del bus di servizio a cui inviare il messaggio. Sono consentite espressioni di criteri e valori denominati. È queue-name necessario specificare o topic-name . NO N/A
namespace Specifica il nome di dominio completo dello spazio dei nomi del bus di servizio. Sono consentite espressioni di criteri e valori denominati. NO N/A
client-id Specifica l'ID client dell'identità gestita assegnata dall'utente per l'autenticazione con il bus di servizio. All'identità deve essere assegnato il ruolo Mittente dati del bus di servizio di Azure. Sono consentite espressioni di criteri e valori denominati. Se non specifichi questo attributo, viene utilizzata l'identità assegnata dal sistema. NO N/A
message-id Identificatore del messaggio. Deve essere un GUID valido. Le espressioni di criteri sono consentite. Se omesso, API Management genera una GUID. NO GUID generato
session-id Identificatore di sessione bus di servizio utilizzato per raggruppare i messaggi correlati. Deve essere un GUID valido. Le espressioni di criteri sono consentite. NO N/A
time-to-live Quanto tempo il messaggio rimane disponibile per l'elaborazione prima di scadere. Usa un valore TimeSpan, ad 00:10:00esempio . NO N/A
response-variable-name Nome di una variabile di contesto che riceve informazioni sull'operazione di invio del bus di servizio. NO N/A
ignore-error Se un fallimento di invio di bus di servizio dovrebbe permettere di continuare l'esecuzione delle policy. true = continua; false = invocare la gestione normale degli errori. NO false

Annotazioni

Quando specifichi response-variable-name, API Management memorizza informazioni sull'operazione di invio del bus di servizio in quella variabile contestuale. Al successo, contiene MessageId, SessionId, e TimeToLive. In caso di errore di invio ignorato, contiene Error.Reason e Error.Message.

Elements

Elemento Description Obbligatorio
payload Specifica il payload del messaggio da inviare al bus di servizio. Sono consentite espressioni di criteri e valori denominati. Yes
message-properties Raccolta di message-property sottoelementi che specificano i metadati da passare con il payload del messaggio. Ognuno message-property è costituito da una coppia nome-valore. Sono consentite espressioni di criteri e valori denominati. NO

Usage

Note sull'utilizzo

  • È necessario creare in modo preliminare la coda o l'argomento del bus di servizio di Azure che riceve un messaggio.
  • È possibile usare questo criterio più volte per definizione di criteri.
  • Se ometti message-id, API Management genera un GUID.
  • I valori configurati message-id e session-id devono essere GUID validi.
  • Da usare session-id quando l'entità bus di servizio richiede sessioni.
  • time-to-live usa un TimeSpan valore come 00:10:00.
  • ignore-error Si applica ai fallimenti di invio. Una configurazione dei messaggi non valida, come un GUID o un TTL non validi, causa comunque il fallimento della policy.

Esempi

Inviare un messaggio a una coda del bus di servizio

In questo esempio, un messaggio costituito dal corpo della richiesta viene inviato alla coda degli ordini. L'ID della richiesta diventa l'ID del messaggio, il messaggio scade dopo 10 minuti e le informazioni di invio vengono memorizzate in serviceBusResult. Un fallimento di invio provoca la gestione degli errori di gestione API. L'istanza di Gestione API usa un'identità assegnata dall'utente per l'accesso. La richiesta viene quindi inoltrata al servizio 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>

Inviare un messaggio a un argomento del bus di servizio

In questo esempio, invii un messaggio che contiene il corpo della richiesta a un argomento del bus di servizio. L'istanza di Gestione API usa un'identità assegnata dal sistema per l'accesso. Poi, inoltri la richiesta al servizio 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>

Inviare un messaggio e metadati

In questo esempio, invii un messaggio che contiene il corpo della richiesta a un argomento del bus di servizio e imposti una proprietà di messaggio per inviare i metadati con il payload. L'istanza di Gestione API usa un'identità assegnata dal sistema per l'accesso. Poi, inoltri la richiesta al servizio 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>

Inviare un messaggio e restituire immediatamente

In questo esempio, invii un messaggio che contiene il corpo della richiesta a un argomento del bus di servizio. L'istanza di Gestione API usa un'identità assegnata dal sistema per l'accesso. Poi, restituisci immediatamente un 201 codice di stato di risposta al chiamante.

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

Per ulteriori informazioni sull'utilizzo dei criteri, vedere: