Wysyłanie komunikatu usługi Service Bus

DOTYCZY: Developer | Podstawowa | Standardowa | Premia

Zasady send-service-bus-message wysyłają komunikat do kolejki lub tematu usługi Azure Service Bus. Możesz opcjonalnie przekierować żądanie API do usługi backend.

Uwaga / Notatka

Uwaga / Notatka

Ustaw elementy zasad i elementy podrzędne w kolejności podanej w oświadczeniu zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.

Oświadczenie polityki

<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 Wymagane Default
queue-name Określa nazwę kolejki usługi Service Bus do wysłania komunikatu. Wyrażenia zasad i nazwane wartości są dozwolone. queue-name Albo topic-name musi być określony. Nie. N/A
topic-name Określa nazwę tematu usługi Service Bus do wysłania komunikatu. Wyrażenia zasad i nazwane wartości są dozwolone. queue-name Albo topic-name musi być określony. Nie. N/A
namespace Określa w pełni kwalifikowaną nazwę domeny przestrzeni nazw usługi Service Bus. Wyrażenia zasad i nazwane wartości są dozwolone. Nie. N/A
client-id Określa identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika do uwierzytelniania za pomocą usługi Service Bus. Tożsamość musi mieć przypisaną rolę Nadawca danych usługi Azure Service Bus. Wyrażenia zasad i nazwane wartości są dozwolone. Jeśli nie określisz tego atrybutu, używa się tożsamości przypisanej przez system. Nie. N/A
message-id Identyfikator wiadomości. Musi to być prawidłowy identyfikator GUID. Wyrażenia zasad są dozwolone. Jeśli zostanie pominięty, zarządzanie API generuje GUID. Nie. Wygenerowany GUID
session-id Identyfikator sesji Service Bus używany do grupowania powiązanych wiadomości. Musi to być prawidłowy identyfikator GUID. Wyrażenia zasad są dozwolone. Nie. N/A
time-to-live Jak długo wiadomość pozostaje dostępna do przetworzenia przed jej wygaśnięciem. Użyj wartości TimeSpan, na przykład 00:10:00. Nie. N/A
response-variable-name Nazwa zmiennej kontekstowej, która otrzymuje informacje o operacji wysłania Service Bus. Nie. N/A
ignore-error Czy awaria wysłania Service Bus powinna pozwolić na kontynuowanie wykonywania polityki. true = kontynuuj; false = wywołaj normalne obsługiwanie błędów. Nie. false

Uwaga / Notatka

Gdy określasz response-variable-name, zarządzanie API przechowuje informacje o operacji wysyłania Service Bus w tej zmiennej kontekstowej. Przy sukcesie zawiera , MessageIdSessionId, oraz TimeToLive. W przypadku ignorowanego niepowodzenia wysyłania zawiera i Error.ReasonError.Message.

Elements

Składnik Description Wymagane
payload Określa ładunek komunikatu do wysłania do magistrali usług. Wyrażenia zasad i nazwane wartości są dozwolone. Tak
message-properties Kolekcja message-property podelementów określających metadane, które mają być przekazywane z ładunkiem komunikatu. Każda message-property z nich składa się z pary nazwa-wartość. Wyrażenia zasad i nazwane wartości są dozwolone. Nie.

Usage

Uwagi dotyczące użycia

  • Musisz wstępnie utworzyć kolejkę lub temat usługi Azure Service Bus, który odbiera komunikat.
  • Tych zasad można używać wiele razy na definicję zasad.
  • Jeśli pominiesz message-id, API Management generuje GUID.
  • Konfigurowane message-id wartości i session-id wartości muszą być ważnymi GUID.
  • Używajsession-id, gdy jednostka Service Bus wymaga sesji.
  • time-to-live używa TimeSpan wartości takiej jak 00:10:00.
  • ignore-error Dotyczy nieudanych wysłuchań. Nieprawidłowa konfiguracja wiadomości, taka jak nieprawidłowy GUID lub TTL, nadal powoduje awarię polityki.

Przykłady

Wysyłanie komunikatu do kolejki usługi Service Bus

W tym przykładzie wiadomość składająca się z ciała żądania jest wysyłana do kolejki zamówień. ID żądania staje się ID wiadomości, wiadomość wygasa po 10 minutach, a informacje o wysyłaniu są przechowywane w serviceBusResult. Niepowodzenie wysyłania wysyła proces obsługi błędów w API Management. Wystąpienie usługi API Management używa tożsamości przypisanej przez użytkownika na potrzeby dostępu. Żądanie jest następnie przekazywane do usługi zaplecza.

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

Wysyłanie komunikatu do tematu usługi Service Bus

W tym przykładzie wysyłasz wiadomość zawierającą ciało żądania do tematu magistrali usługowej. Wystąpienie usługi API Management używa tożsamości przypisanej przez system na potrzeby dostępu. Następnie przekierowujesz żądanie do usługi 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>

Wysyłanie komunikatu i metadanych

W tym przykładzie wysyłasz wiadomość zawierającą ciało żądania do tematu magistrali serwisowej i ustawiasz właściwość wiadomości, która wysyła metadane wraz z tym ładunkiem. Wystąpienie usługi API Management używa tożsamości przypisanej przez system na potrzeby dostępu. Następnie przekierowujesz żądanie do usługi 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>

Wysyłanie wiadomości i natychmiastowe zwracanie

W tym przykładzie wysyłasz wiadomość zawierającą ciało żądania do tematu magistrali usługowej. Wystąpienie usługi API Management używa tożsamości przypisanej przez system na potrzeby dostępu. Następnie natychmiast zwracasz 201 kod statusu odpowiedzi do dzwoniącego.

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

Aby uzyskać więcej informacji na temat pracy z politykami, zobacz: