Requêtes et réponses en flux continu

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Ce que vous allez apprendre dans cet article

Après l'avoir, vous saurez :

  • ce qu'est le streaming des requêtes et des réponses dans Apigee Edge ;
  • quand utiliser le streaming des requêtes et des réponses ;
  • comment activer le streaming des requêtes et des réponses.

Qu'est-ce que le streaming des requêtes et des réponses ?

Par défaut, le streaming HTTP est désactivé et les charges utiles de requêtes et de réponses sont écrites dans un tampon en mémoire avant d'être traitées par le pipeline de proxy d'API. Vous pouvez modifier ce comportement en activant le streaming. Si le streaming est activé, les charges utiles de requêtes et de réponses sont diffusées sans modification vers l'application cliente (pour les réponses) et le point de terminaison cible (pour les requêtes).

Quand dois-je activer le traitement par flux ?

Si votre proxy d'API gère des requêtes et/ou des réponses très volumineuses (pour connaître les limites de taille, consultez la section Autres informations sur le streaming ci-dessous), vous pouvez activer le streaming.

Que dois-je savoir de plus sur le streaming ?

La taille de la charge utile des messages est limitée à 10 Mo dans Edge Cloud et dans le cloud privé, même si le streaming est activé. Dans les requêtes et les réponses non diffusées en streaming, cette taille génère une erreur protocol.http.TooBigBody.

Dans les déploiements Edge for Private Cloud, vous pouvez modifier la limite de taille des requêtes/réponses non diffusées en continu. Veillez à effectuer des tests avant de déployer le changement en production.

  • Pour les versions Edge for Private Cloud antérieures à la version 4.16.01:

    Sur tous les processeurs de messages, modifiez le fichier http.properties pour augmenter la limite dans le paramètre HTTPResponse.body.buffer.limit, puis redémarrez le processeur de messages.
  • Pour Edge for Private Cloud version 4.16.01 et ultérieures:
    1. Modifiez le fichier /<inst_root>/apigee/customer/application/message-processor.properties. Si ce fichier n'existe pas, créez-le.

    2. Définissez la propriété conf_http_HTTPResponse.body.buffer.limit dans message-processor.properties. Par exemple:
      conf_http_HTTPResponse.body.buffer.limit=5m

    3. Redémarrez le processeur de messages:
      > /<inst_root>/apigee/apigee-service/bin/apigee-serviceedge-message-processor restart

    4. Répétez l'opération pour tous les processeurs de messages.

comment activer le streaming des requêtes et des réponses.

Pour activer le streaming des requêtes, vous devez ajouter la propriété request.streaming.enabled aux définitions ProxyEndpoint et TargetEndpoint du groupe de proxys et la définir sur true. De même, définissez la propriété response.streaming.enabled pour activer le streaming de réponse.

Vous pouvez localiser ces fichiers de configuration dans l'interface utilisateur de gestion, au niveau de la vue Développement de votre proxy. Si vous développez en local, ces fichiers de définition se trouvent dans apiproxy/proxies et apiproxy/targets.

Cet exemple montre comment activer le streaming des requêtes et des réponses dans la définition de TargetEndpoint.

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
      <Property name="supports.http10">true</Property>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

Cet exemple montre comment activer le streaming des requêtes et des réponses et dans la définition de ProxyEndpoint :

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="allow.http10">true</Property>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
  </HTTPProxyConnection>
</ProxyEndpoint>

Pour en savoir plus sur la configuration des points de terminaison, consultez la documentation de référence sur les propriétés de point de terminaison.

Exemples de code associés

Les exemples de proxy d'API sur GitHub sont faciles à télécharger et à utiliser. Reportez-vous à la page Utiliser les exemples de proxy d'API pour en savoir plus sur le téléchargement et l'utilisation des exemples.

Voici quelques exemples de proxys qui intègrent le streaming :

  • streaming : illustre un proxy d'API configuré pour le streaming HTTP.
  • Accroche Edge : Générateur d'URL signée : illustre la bonne pratique qui consiste à générer une URL signée pour accéder à des fichiers volumineux au lieu d'essayer de les diffuser dans une requête/réponse.