Servicebusnachricht senden

GILT FÜR: Entwickler | Einfach | Standard | Prämie

Die send-service-bus-message Richtlinie sendet eine Nachricht an eine Azure Service Bus-Warteschlange oder ein Thema. Sie können die API-Anfrage optional an den Backend-Service weiterleiten.

Hinweis

Hinweis

Legen Sie die Elemente und untergeordneten Elemente einer Richtlinie in der Reihenfolge fest, die in der Richtlinienanweisung angegeben ist. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.

Richtlinienerklärung

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

Attribute

Merkmal Description Erforderlich Standard
queue-name Gibt den Namen der Servicebuswarteschlange an, an die die Nachricht gesendet werden soll. Richtlinienausdrücke und benannte Werte sind zulässig. Entweder queue-name oder topic-name muss angegeben werden. Nein N/A
topic-name Gibt den Namen des Servicebusthemas an, an das die Nachricht gesendet werden soll. Richtlinienausdrücke und benannte Werte sind zulässig. Entweder queue-name oder topic-name muss angegeben werden. Nein N/A
namespace Gibt den vollqualifizierten Domänennamen des Dienstbusnamespaces an. Richtlinienausdrücke und benannte Werte sind zulässig. Nein N/A
client-id Gibt die Client-ID der vom Benutzer zugewiesenen verwalteten Identität an, um sich mit dem Servicebus zu authentifizieren. Der Identität muss die Azure Service Bus Data Sender-Rolle zugewiesen werden. Richtlinienausdrücke und benannte Werte sind zulässig. Wenn Sie dieses Attribut nicht angeben, wird die systemzugewiesene Identität verwendet. Nein N/A
message-id Nachrichtenbezeichner. Muss eine gültige GUID sein. Richtlinienausdrücke sind zulässig. Wenn es weggelassen wird, generiert das API-Management einen GUID. Nein Generierte GUID
session-id Service Bus Session-Identifikator, der zur Gruppierung verwandter Nachrichten verwendet wird. Muss eine gültige GUID sein. Richtlinienausdrücke sind zulässig. Nein N/A
time-to-live Wie lange die Nachricht zur Verarbeitung verfügbar bleibt, bevor sie abläuft. Verwenden Sie zum Beispiel 00:10:00einen TimeSpan-Wert . Nein N/A
response-variable-name Name einer Kontextvariable, die Informationen über die Send-Operation des Service Bus empfängt. Nein N/A
ignore-error Ob ein Service Bus-Sendfehler die Fortsetzung der Richtlinienausführung ermöglichen sollte. true = fortfahren; false = Normale Fehlerbehandlung aufrufen. Nein false

Hinweis

Wenn Sie spezifizierenresponse-variable-name, speichert API Management Informationen über die Service Bus send-Operation in dieser Kontextvariable. Bei Erfolg enthält MessageIder , SessionId, und TimeToLive. Bei einem ignorierten Send-Fehler enthält Error.Reason es und Error.Message.

Elemente

Element Description Erforderlich
payload Gibt die Nachrichtennutzlast an, die an den Servicebus gesendet werden soll. Richtlinienausdrücke und benannte Werte sind zulässig. Yes
message-properties Eine Auflistung von message-property Unterelementen, die Metadaten angeben, die mit der Nachrichtennutzlast übergeben werden sollen. Jedes message-property besteht aus einem Namens-Wert-Paar. Richtlinienausdrücke und benannte Werte sind zulässig. Nein

Usage

Verwendungshinweise

  • Sie müssen die Azure Service Bus-Warteschlange oder das Thema, die eine Nachricht empfängt, vorab erstellen.
  • Sie können diese Richtlinie mehrmals pro Richtliniendefinition verwenden.
  • Wenn Sie weglassen message-id, generiert API-Management ein GUID.
  • Konfigurierte und session-id Werte message-id müssen gültige GUIDs sein.
  • Verwenden session-id Sie, wenn die Service Bus-Entität Sitzungen benötigt.
  • time-to-live verwendet einen TimeSpan Wert wie 00:10:00.
  • ignore-error gilt für Sendefehler. Eine ungültige Nachrichtenkonfiguration, wie etwa ein ungültiges GUID oder TTL, führt weiterhin zu Richtlinienfehlern.

Examples

Senden einer Nachricht an eine Servicebuswarteschlange

In diesem Beispiel wird eine Nachricht, die aus dem Anforderungskörper besteht, an die Bestellwarteschlange gesendet. Die Anfrage-ID wird zur Nachrichten-ID, die Nachricht verfällt nach 10 Minuten, und die Sendeinformationen werden in serviceBusResultgespeichert. Ein Sendefehler ruft die Fehlerbehandlung des API-Managements auf. Die API-Verwaltungsinstanz verwendet eine vom Benutzer zugewiesene Identität für den Zugriff. Die Anforderung wird dann an den Back-End-Dienst weitergeleitet.

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

Senden einer Nachricht an ein Servicebusthema

In diesem Beispiel senden Sie eine Nachricht, die den Anforderungskörper enthält, an ein Servicebus-Thema. Die API-Verwaltungsinstanz verwendet eine vom System zugewiesene Identität für den Zugriff. Dann leitest du die Anfrage an den Backend-Service weiter.

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

Senden einer Nachricht und Metadaten

In diesem Beispiel senden Sie eine Nachricht, die den Anforderungskörper enthält, an ein Servicebus-Thema und setzen eine Nachrichteneigenschaft, die Metadaten mit der Nutzlast überträgt. Die API-Verwaltungsinstanz verwendet eine vom System zugewiesene Identität für den Zugriff. Dann leitest du die Anfrage an den Backend-Service weiter.

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

Nachricht senden und sofort zurückgeben

In diesem Beispiel senden Sie eine Nachricht, die den Anforderungskörper enthält, an ein Servicebus-Thema. Die API-Verwaltungsinstanz verwendet eine vom System zugewiesene Identität für den Zugriff. Dann geben Sie dem Anrufer sofort einen 201 Antwortstatuscode zurück.

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

Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier: