Skicka Service Bus-meddelande

GÄLLER FÖR: Utvecklare | Grundläggande | Standard | Premie

Principen send-service-bus-message skickar ett meddelande till en Azure Service Bus-kö eller ett ämne. Du kan valfritt vidarebefordra API-förfrågan till backend-tjänsten.

Anmärkning

Anmärkning

Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. Läs mer om hur du anger eller redigerar API Management-principer.

Principuttryck

<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 Krävs Förinställning
queue-name Anger namnet på service bus-kön som meddelandet ska skickas till. Principuttryck och namngivna värden tillåts. Antingen queue-name eller topic-name måste anges. Nej N/A
topic-name Anger namnet på det Service Bus-ämne som meddelandet ska skickas till. Principuttryck och namngivna värden tillåts. Antingen queue-name eller topic-name måste anges. Nej N/A
namespace Anger det fullständigt kvalificerade domännamnet för Service Bus-namnområdet. Principuttryck och namngivna värden tillåts. Nej N/A
client-id Anger klient-ID för den användartilldelade hanterade identiteten som ska autentiseras med Service Bus. Identiteten måste tilldelas rollen Azure Service Bus Data Sender. Principuttryck och namngivna värden tillåts. Om du inte specificerar detta attribut används den systemtilldelade identiteten. Nej N/A
message-id Meddelandeidentifierare. Det måste vara en giltig GUID. Principuttryck tillåts. Om den utelämnas genererar API Management en GUID. Nej Genererad GUID
session-id Service Bus-sessionsidentifierare som används för att gruppera relaterade meddelanden. Det måste vara en giltig GUID. Principuttryck tillåts. Nej N/A
time-to-live Hur länge meddelandet är tillgängligt för bearbetning innan det går ut? Använd till exempel 00:10:00ett TimeSpan-värde. Nej N/A
response-variable-name Namnet på en kontextvariabel som tar emot information om Service Bus-sändningsoperationen. Nej N/A
ignore-error Om ett Service Bus-skickafel bör tillåta policyutförandet att fortsätta. true = fortsätt; false = anropa normal felhantering. Nej false

Anmärkning

När du specificerar response-variable-name, lagrar API Management information om Service Bus send-operationen i den kontextvariabeln. Vid framgång innehåller MessageIdden , SessionId, och TimeToLive. Vid ett ignorerat sändningsfel innehåller Error.Reason den och Error.Message.

Elements

Komponent Description Krävs
payload Anger den meddelandenyttolast som ska skickas till Service Bus. Principuttryck och namngivna värden tillåts. Yes
message-properties En samling message-property underelement som anger metadata som ska skickas med meddelandets nyttolast. Var och message-property en består av ett namn/värde-par. Principuttryck och namngivna värden tillåts. Nej

Usage

Användningsanteckningar

  • Du måste skapa Azure Service Bus-kön eller ämnet som tar emot ett meddelande i förväg.
  • Du kan använda den här principen flera gånger per principdefinition.
  • Om du utelämnar message-id, genererar API Management en GUID.
  • Konfigurerade message-id och session-id värden måste vara giltiga GUID:er.
  • Använd session-id när Service Bus-enheten kräver sessioner.
  • time-to-live använder ett TimeSpan värde som 00:10:00.
  • ignore-error gäller för skicka-misslyckanden. Ogiltig meddelandekonfiguration, såsom en ogiltig GUID eller TTL, orsakar fortfarande policyfel.

Examples

Skicka ett meddelande till en Service Bus-kö

I detta exempel skickas ett meddelande bestående av förfrågningskroppen till orderkön. Förfrågnings-ID:t blir meddelande-ID:t, meddelandet går ut efter 10 minuter och sändningsinformationen lagras i serviceBusResult. Ett sändningsfel anropar API Management-felhantering. API Management-instansen använder en användartilldelad identitet för åtkomst. Begäran vidarebefordras sedan till serverdelstjänsten.

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

Skicka ett meddelande till ett Service Bus-ämne

I detta exempel skickar du ett meddelande som innehåller förfrågningskroppen till ett servicebussämne. API Management-instansen använder en systemtilldelad identitet för åtkomst. Sedan vidarebefordrar du förfrågan till backend-tjänsten.

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

Skicka ett meddelande och metadata

I detta exempel skickar du ett meddelande som innehåller begäransökaren till ett servicebussämne och sätter en meddelandeegenskap för att skicka metadata med nyttolasten. API Management-instansen använder en systemtilldelad identitet för åtkomst. Sedan vidarebefordrar du förfrågan till backend-tjänsten.

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

Skicka meddelande och returnera omedelbart

I detta exempel skickar du ett meddelande som innehåller förfrågningskroppen till ett servicebussämne. API Management-instansen använder en systemtilldelad identitet för åtkomst. Sedan returnerar du omedelbart en 201 svarsstatuskod till den som ringer.

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

Mer information om hur du arbetar med principer finns i: