Service Bus-bericht verzenden

VAN TOEPASSING OP: Ontwikkelaar | Basic | Standaard | Premie

Het send-service-bus-message beleid verzendt een bericht naar een Azure Service Bus-wachtrij of -onderwerp. Je kunt het API-verzoek optioneel doorsturen naar de backend-service.

Opmerking

Opmerking

Stel de elementen en onderliggende elementen van het beleid in volgens de volgorde die in de beleidsverklaring is opgegeven. Meer informatie over het instellen of bewerken van API Management-beleid.

Beleidsverklaring

<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 Verplicht Verstek
queue-name Hiermee geeft u de naam van de service bus-wachtrij om het bericht naar te verzenden. Beleidsexpressies en benoemde waarden zijn toegestaan. queue-name Of topic-name moet worden opgegeven. Nee. N/A
topic-name Hiermee geeft u de naam op van het Service Bus-onderwerp waar het bericht naartoe moet worden verzonden. Beleidsexpressies en benoemde waarden zijn toegestaan. queue-name Of topic-name moet worden opgegeven. Nee. N/A
namespace Hiermee geeft u de volledig gekwalificeerde domeinnaam van de Service Bus-naamruimte. Beleidsexpressies en benoemde waarden zijn toegestaan. Nee. N/A
client-id Hiermee geeft u de client-id van de door de gebruiker toegewezen beheerde identiteit op voor verificatie met service bus. Aan de identiteit moet de rol Azure Service Bus-gegevenszender worden toegewezen. Beleidsexpressies en benoemde waarden zijn toegestaan. Als je dit attribuut niet specificeert, wordt de systeem-toegewezen identiteit gebruikt. Nee. N/A
message-id Bericht-id. Moet een geldige GUID zijn. Beleidsexpressies zijn toegestaan. Als het wordt weggelaten, genereert API Management een GUID. Nee. Gegenereerde GUID
session-id Service Bus sessie-identificatie gebruikt om gerelateerde berichten te groeperen. Moet een geldige GUID zijn. Beleidsexpressies zijn toegestaan. Nee. N/A
time-to-live Hoe lang het bericht beschikbaar blijft voor verwerking voordat het verloopt. Gebruik bijvoorbeeld een TimeSpan-waarde 00:10:00. Nee. N/A
response-variable-name Naam van een contextvariabele die informatie ontvangt over de Service Bus-verzendoperatie. Nee. N/A
ignore-error Of een Service Bus send-fout zou moeten toestaan dat de uitvoering van het beleid kan doorgaan. true = ga door; false = roep normale foutafhandeling aan. Nee. false

Opmerking

Wanneer je specificeertresponse-variable-name, slaat API Management informatie op over de Service Bus send-operatie in die contextvariabele. Bij succes bevat MessageIdhet , SessionId, en TimeToLive. Bij een genegeerde verzendfout bevat Error.Reason het en Error.Message.

Elements

Onderdeel Description Verplicht
payload Hiermee geeft u de nettolading van het bericht dat naar de servicebus moet worden verzonden. Beleidsexpressies en benoemde waarden zijn toegestaan. Yes
message-properties Een verzameling message-property subelementen die metagegevens opgeven die moeten worden doorgegeven met de nettolading van het bericht. Elk message-property bestaat uit een naam-waardepaar. Beleidsexpressies en benoemde waarden zijn toegestaan. Nee.

Usage

Gebruiksnotities

  • U moet vooraf de Azure Service Bus-wachtrij of het onderwerp maken dat een bericht ontvangt.
  • U kunt dit beleid meerdere keren per beleidsdefinitie gebruiken.
  • Als je weglaat message-id, genereert API Management een GUID.
  • Geconfigureerde message-id en session-id waarden moeten geldige GUID's zijn.
  • Gebruik session-id wanneer de Service Bus-entiteit sessies nodig heeft.
  • time-to-live gebruikt een TimeSpan waarde zoals 00:10:00.
  • ignore-error geldt voor verzendfouten. Ongeldige berichtconfiguratie, zoals een ongeldige GUID of TTL, veroorzaakt nog steeds een beleidsfout.

Voorbeelden

Een bericht verzenden naar een servicebuswachtrij

In dit voorbeeld wordt een bericht bestaande uit het verzoeklichaam naar de orderwachtrij gestuurd. De verzoek-ID wordt de bericht-ID, het bericht verloopt na 10 minuten, en verzendinformatie wordt opgeslagen in serviceBusResult. Een verzendfout roept API Management foutbehandeling aan. Het API Management-exemplaar maakt gebruik van een door de gebruiker toegewezen identiteit voor toegang. De aanvraag wordt vervolgens doorgestuurd naar de back-endservice.

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

Een bericht verzenden naar een Service Bus-onderwerp

In dit voorbeeld stuur je een bericht dat de requestbody bevat naar een servicebus-onderwerp. Het API Management-exemplaar maakt gebruik van een door het systeem toegewezen identiteit voor toegang. Vervolgens stuur je het verzoek door naar de backend-service.

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

Een bericht en metagegevens verzenden

In dit voorbeeld stuur je een bericht dat de requestbody bevat naar een servicebus-topic en stel je een berichteigenschap in om metadata met de payload te verzenden. Het API Management-exemplaar maakt gebruik van een door het systeem toegewezen identiteit voor toegang. Vervolgens stuur je het verzoek door naar de backend-service.

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

Bericht verzenden en onmiddellijk retourneren

In dit voorbeeld stuur je een bericht dat de requestbody bevat naar een servicebus-onderwerp. Het API Management-exemplaar maakt gebruik van een door het systeem toegewezen identiteit voor toegang. Vervolgens geef je direct een 201 responsstatuscode terug aan de beller.

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

Zie voor meer informatie over het werken met beleid: