Configurer le délai avant expiration des E/S sur les processeurs de message

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

Ce document explique comment configurer le délai avant expiration des E/S pour les processeurs de messages Apigee Edge.

Le délai avant expiration des E/S sur le processeur de messages représente la durée pendant laquelle il attend de recevoir une réponse du serveur backend ou que le socket soit prêt à écrire une requête sur le serveur backend, avant d'expirer.

La valeur par défaut du délai d'E/S du processeur de messages est 55 seconds. Ce délai s'applique aux serveurs backend configurés dans la configuration du point de terminaison cible et dans la règle ServiceCall de votre proxy d'API.

Le délai avant expiration des E/S pour les processeurs de messages peut être augmenté ou réduit à partir de la valeur par défaut de 55 seconds en fonction de vos besoins. Vous pouvez le configurer aux emplacements suivants:

  • Dans le proxy d'API :
    • Point de terminaison cible
    • Règle ServiceCallout
  • Sur le processeur de messages

Les propriétés suivantes contrôlent le délai avant expiration des E/S sur les processeurs de messages:

Nom de propriété Emplacement Description
io.timeout.millis

Proxy d'API:

  • Point de terminaison cible
  • Règlement sur les appels de service

Il s'agit du temps maximal pendant lequel le processeur de messages effectue les opérations suivantes:

  • attend de recevoir une réponse du serveur backend après avoir établi la connexion et envoyé la requête au serveur backend, OU
  • Attend que le socket soit prêt pour que le processeur de messages envoie la requête au serveur backend.

Si le serveur backend ne répond pas dans ce délai, le processeur de messages expire.

Par défaut, cette propriété utilise la valeur définie pour la propriété HTTPTransport.io.timeout.millis sur le processeur de messages. La valeur par défaut est 55 seconds.

Si cette propriété est modifiée avec une nouvelle valeur de délai d'expiration pour un proxy d'API spécifique, seul ce proxy d'API est affecté.

HTTPTransport.io.timeout.millis Processeur de messages

Il s'agit du temps maximal pendant lequel le processeur de messages effectue les opérations suivantes:

  • attend de recevoir une réponse du serveur backend après avoir établi la connexion et envoyé la requête au serveur backend, OU
  • Attend que le socket soit prêt pour que le processeur de messages envoie la requête au serveur backend.

Si le serveur backend ne répond pas dans ce délai, le processeur de messages expire.

Cette propriété est utilisée pour tous les proxys d'API exécutés sur ce processeur de messages.

La valeur par défaut de cette propriété est 55 seconds

Vous pouvez modifier cette propriété comme expliqué dans la section Configurer le délai avant expiration des E/S sur les processeurs de messages ou écraser cette valeur en définissant la propriété io.timeout.millis au niveau du proxy de l'API.

Avant de commencer

Avant de suivre la procédure décrite dans ce document, assurez-vous de bien comprendre les sujets suivants:

Configuration du délai avant expiration des E/S dans le proxy d'API

Le délai avant expiration des E/S peut être configuré aux emplacements proxy d'API suivants:

  • Point de terminaison cible
  • Règle ServiceCallout

Configuration du délai d'expiration des E/S sur le point de terminaison cible du proxy d'API

Cette section explique comment configurer le délai d'expiration des E/S dans le point de terminaison cible de votre proxy d'API. Le délai avant expiration des E/S peut être configuré via la propriété io.timeout.millis, qui représente la valeur du délai avant expiration des E/S en millisecondes.

  1. Dans l'interface utilisateur Edge, sélectionnez le proxy d'API spécifique dans lequel vous souhaitez configurer la nouvelle valeur de délai avant expiration des E/S.
  2. Sélectionnez le point de terminaison cible spécifique que vous souhaitez modifier.
  3. Ajoutez la propriété io.timeout.millis avec une valeur appropriée sous l'élément <HTTPTargetConnection> dans la configuration TargetEndpoint.
  4. Par exemple, pour définir le délai avant expiration des E/S sur 120 secondes, ajoutez le bloc de code suivant:

        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
    

    Étant donné que la propriété io.timeout.millis est exprimée en millisecondes, la valeur pour 120 secondes est 120000.

    Les exemples suivants montrent comment configurer le délai avant expiration des E/S dans la configuration du point de terminaison cible de votre proxy d'API:

    Exemple de configuration d'un point de terminaison cible avec l'URL du serveur backend

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <URL>https://mocktarget.apigee.net/json</URL>
        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
      </HTTPTargetConnection>
    </TargetEndpoint>
    

    Exemple de configuration d'un point de terminaison cible avec un serveur cible

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="target1" />
          <Server name="target2" />
        </LoadBalancer>
        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
    
  5. Enregistrez les modifications apportées à votre proxy d'API.

Configuration du délai d'expiration des E/S dans la règle ServiceCallout du proxy d'API

Cette section explique comment configurer le délai avant expiration des E/S dans la règle ServiceAppel de votre proxy d'API. Le délai avant expiration des E/S peut être configuré via l'élément <Timeout> ou la propriété io.timeout.millis. L'élément <Timeout> et la propriété io.timeout.millis représentent les valeurs de délai avant expiration des E/S en millisecondes.

Vous pouvez configurer le délai avant expiration des E/S dans la stratégie ServiceAppel à l'aide de l'une des méthodes suivantes:

  • Élément <Timeout>.
  • io.timeout.millis.

Élément de délai d'inactivité

Pour configurer le délai avant expiration des E/S dans la stratégie ServiceAppel à l'aide de l'élément <Timeout>, procédez comme suit:

  1. Dans l'interface utilisateur Edge, sélectionnez le proxy d'API spécifique dans lequel vous souhaitez configurer la nouvelle valeur de délai d'expiration E/S pour la stratégie ServiceAppel.
  2. Sélectionnez la règle ServiceCall spécifique que vous souhaitez modifier.
  3. Ajoutez l'élément <Timeout> avec une valeur appropriée dans la configuration <ServiceCallout>.

    Par exemple, pour définir le délai avant expiration des E/S sur 120 secondes, ajoutez la ligne de code suivante:

        <Timeout>120000</Timeout>
    

    Étant donné que l'élément <Timeout> est exprimé en millisecondes, la valeur pour 120 secondes est 120000.

    L'exemple suivant montre comment configurer le délai avant expiration des E/S dans la stratégie ServiceAppel à l'aide de l'élément <Timeout>:

    Exemple de configuration de la règle ServiceAppel à l'aide d'une URL pour le serveur backend

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Timeout>120000</Timeout>
        <HTTPTargetConnection>
            <Properties/>
            <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>
    
  4. Enregistrez les modifications apportées à votre proxy d'API.

Propriété io.timeout.millis

Pour configurer le délai avant expiration des E/S dans la stratégie ServiceAppel à l'aide de la propriété io.timeout.millis, procédez comme suit:

  1. Dans l'interface utilisateur Edge, sélectionnez le proxy d'API spécifique dans lequel vous souhaitez configurer la nouvelle valeur de délai avant expiration des E/S pour la stratégie ServiceCallout.
  2. Sélectionnez la règle ServiceCall spécifique que vous souhaitez modifier.
  3. Ajoutez la propriété io.timeout.millis avec une valeur appropriée sous l'élément <HTTPTargetConnection> dans la configuration TargetEndpoint.

    Par exemple, pour définir le délai avant expiration des E/S sur 120 secondes, ajoutez le bloc de code suivant:

        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
    

    Étant donné que la propriété io.timeout.millis est exprimée en millisecondes, la valeur pour 120 secondes est 120000.

    Les exemples suivants montrent comment configurer le délai avant expiration des E/S dans la configuration du point de terminaison cible de votre proxy d'API:

    Exemple de configuration de la règle ServiceAppel à l'aide d'une URL pour le serveur backend

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <HTTPTargetConnection>
          <Properties>
            <Property name="io.timeout.millis">120000</Property>
          </Properties>
          <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>
    

    Exemple de configuration de la règle ServiceAppel avec un serveur cible

    <ServiceCallout enabled="true" name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Response>calloutResponse</Response>
        <HTTPTargetConnection>
            <LoadBalancer>
                <Server name="target1" />
                <Server name="target2" />
            </LoadBalancer>
            <Properties>
                <Property name="io.timeout.millis">120000</Property>
            </Properties>
            <Path>/test</Path>
        </HTTPTargetConnection>
    </ServiceCallout>
    
  4. Enregistrez les modifications apportées à votre proxy d'API.

Configurer le délai avant expiration des E/S sur les processeurs de messages

Cette section explique comment configurer le délai avant expiration des E/S sur les processeurs de messages. Le délai avant expiration des E/S peut être configuré via la propriété HTTPTransport.io.timeout.millis, qui représente la valeur du délai avant expiration des E/S en millisecondes dans le composant "Processeur de messages", à l'aide du jeton selon la syntaxe décrite dans la section Configurer Edge.

Pour configurer le délai avant expiration des E/S sur les processeurs de messages, procédez comme suit:

  1. Sur l'ordinateur de traitement de messages, ouvrez le fichier suivant dans un éditeur. S'il n'existe pas encore, créez-le.
    /opt/apigee/customer/application/message-processor.properties
    

    Par exemple, pour ouvrir le fichier à l'aide de vi, saisissez la commande suivante:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. Ajoutez une ligne au format suivant au fichier de propriétés, en remplaçant TIME_IN_MILLISECONDS par une valeur :
    conf_http_HTTPTransport.io.timeout.millis=TIME_IN_MILLISECONDS
    

    Par exemple, pour définir le délai avant expiration des E/S sur le processeur de messages sur 120 secondes, ajoutez la ligne suivante:

    conf_http_HTTPTransport.io.timeout.millis=120000
    
  3. Enregistrez les modifications.
  4. Assurez-vous que le fichier de propriétés appartient à l'utilisateur apigee, comme indiqué ci-dessous :
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Redémarrez le processeur de messages comme indiqué ci-dessous :
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Si vous disposez de plusieurs processeurs de messages, répétez les étapes ci-dessus sur chacun d'eux.

Vérifier le délai avant expiration des E/S sur les processeurs de messages

Cette section explique comment vérifier que le délai avant expiration des E/S a bien été modifié sur les processeurs de messages.

Même si vous utilisez le jeton conf_http_HTTPTransport.io.timeout.millis pour définir le délai avant expiration des E/S sur le processeur de messages, vous devez vérifier si la propriété réelle HTTPTransport.io.timeout.millis a été définie avec la nouvelle valeur.

  1. Sur la machine de traitement des messages, recherchez la propriété HTTPTransport.io.timeout.millis dans le répertoire /opt/apigee/edge-message-processor/conf et vérifiez si elle a été définie avec la nouvelle valeur, comme indiqué ci-dessous :
    grep -ri "HTTPTransport.io.timeout.millis" /opt/apigee/edge-message-processor/conf
    
  2. Si la nouvelle valeur de délai avant expiration des E/S est correctement définie sur le processeur de messages, la commande ci-dessus affiche la nouvelle valeur dans le fichier http.properties.
  3. L'exemple de résultat de la commande ci-dessus, une fois que vous avez configuré un délai avant expiration des E/S sur 120 secondes, est le suivant:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPTransport.io.timeout.millis=120000
    

    Dans l'exemple de sortie ci-dessus, notez que la propriété HTTPTransport.io.timeout.millis a été définie avec la nouvelle valeur 120000 dans http.properties. Cela indique que le délai avant expiration des E/S est correctement configuré sur 120 secondes sur le processeur de messages.

  4. Si vous voyez toujours l'ancienne valeur pour la propriété HTTPTransport.io.timeout.millis, vérifiez que vous avez correctement suivi toutes les étapes décrites dans la section Configurer le délai avant expiration des E/S sur les processeurs de messages. Si vous avez manqué une étape, répétez toutes les étapes correctement.
  5. Si vous ne parvenez toujours pas à modifier le délai avant expiration des E/S, veuillez contacter l'assistance Apigee Edge.

Étapes suivantes

Découvrez comment configurer le délai avant expiration des E/S sur les routeurs.