Envoyer un message Service Bus

S’APPLIQUE À : Développeur | De base | Standard | Prime

La send-service-bus-message stratégie envoie un message à une file d’attente ou une rubrique Azure Service Bus. Vous pouvez éventuellement transférer la requête API vers le service backend.

Note

Note

Définissez les éléments de stratégie et les éléments enfants dans l’ordre fourni dans la déclaration de politique. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.

Déclaration de politique

<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

Caractéristique Descriptif Obligatoire Par défaut
queue-name Spécifie le nom de la file d’attente Service Bus à laquelle envoyer le message. Les expressions de stratégie et les valeurs nommées sont autorisées. queue-name Soit topic-name doit être spécifié. Non N/A
topic-name Spécifie le nom de la rubrique Service Bus à laquelle envoyer le message. Les expressions de stratégie et les valeurs nommées sont autorisées. queue-name Soit topic-name doit être spécifié. Non N/A
namespace Spécifie le nom de domaine complet de l’espace de noms Service Bus. Les expressions de stratégie et les valeurs nommées sont autorisées. Non N/A
client-id Spécifie l’ID client de l’identité managée affectée par l’utilisateur pour s’authentifier auprès de Service Bus. L’identité doit être affectée au rôle Expéditeur de données Azure Service Bus. Les expressions de stratégie et les valeurs nommées sont autorisées. Si vous ne spécifiez pas cet attribut, l’identité attribuée par le système est utilisée. Non N/A
message-id Identificateur de message. Doit être un GUID valide. Les expressions de stratégie sont autorisées. Si cela est omis, API Management génère un GUID. Non GUID généré
session-id Identifiant de session Service Bus utilisé pour regrouper les messages associés. Doit être un GUID valide. Les expressions de stratégie sont autorisées. Non N/A
time-to-live Combien de temps le message reste disponible pour le traitement avant son expiration. Utilisez une valeur TimeSpan, par 00:10:00exemple . Non N/A
response-variable-name Nom d’une variable de contexte qui reçoit des informations sur l’opération d’envoi du Service Bus. Non N/A
ignore-error Que ce soit un échec d’envoi Service Bus devrait permettre la poursuite de l’exécution des politiques. true = continuer ; false = invoquer la gestion normale des erreurs. Non false

Note

Lorsque vous spécifiez response-variable-name, API Management stocke des informations sur l’opération d’envoi du Service Bus dans cette variable de contexte. En cas de succès, elle contient MessageId, SessionId, et TimeToLive. Sur un échec d’envoi ignoré, il contient Error.Reason et Error.Message.

Elements

Élément Descriptif Obligatoire
payload Spécifie la charge utile du message à envoyer au service bus. Les expressions de stratégie et les valeurs nommées sont autorisées. Oui
message-properties Collection de message-property sous-éléments qui spécifient les métadonnées à transmettre avec la charge utile du message. Chacun message-property se compose d’une paire nom-valeur. Les expressions de stratégie et les valeurs nommées sont autorisées. Non

Usage

Notes d’utilisation

  • Vous devez précréer la file d’attente ou la rubrique Azure Service Bus qui reçoit un message.
  • Vous pouvez utiliser cette stratégie plusieurs fois par définition de stratégie.
  • Si vous omettez message-id, API Management génère une interface graphique.
  • Les valeurs configurées message-id et session-id doivent être des GUID valides.
  • À utiliser session-id lorsque l’entité Service Bus nécessite des sessions.
  • time-to-live utilise une TimeSpan valeur telle que 00:10:00.
  • ignore-error Cela s’applique aux échecs d’envoi. Une configuration de message invalide, comme un GUID ou un TTL invalides, provoque toujours une défaillance de la politique.

Examples

Envoyer un message à une file d’attente Service Bus

Dans cet exemple, un message composé du corps de la demande est envoyé à la file d’attente des ordres. L’ID de requête devient l’ID du message, le message expire après 10 minutes, et l’information d’envoi est stockée dans serviceBusResult. Une défaillance d’envoi entraîne la gestion des erreurs de gestion des API. L’instance Gestion des API utilise une identité affectée par l’utilisateur pour l’accès. La requête est ensuite transférée au service principal.

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

Envoyer un message à une rubrique Service Bus

Dans cet exemple, vous envoyez un message contenant le corps de la requête vers un sujet de bus de service. L’instance Gestion des API utilise une identité affectée par le système pour l’accès. Ensuite, vous transférez la requête au service 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>

Envoyer un message et des métadonnées

Dans cet exemple, vous envoyez un message contenant le corps de la requête vers un sujet de bus de service et définissez une propriété de message pour envoyer des métadonnées avec la charge utile. L’instance Gestion des API utilise une identité affectée par le système pour l’accès. Ensuite, vous transférez la requête au service 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>

Envoyer un message et retourner immédiatement

Dans cet exemple, vous envoyez un message contenant le corps de la requête vers un sujet de bus de service. L’instance Gestion des API utilise une identité affectée par le système pour l’accès. Ensuite, vous retournez immédiatement un 201 code de statut de réponse à l’appelant.

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

Pour plus d’informations sur l’utilisation des stratégies, consultez :