CyberSource / CyberSource/cybersource-rest-client-java
ApiClient throttles requests in async mode
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 29
- Forks
- 50
- Merge moyen
- 28 min
- PR mergées (30 j)
- 1
Description
OkHttp by default only permits 5 connections to a given host in async mode. This means that in a high traffic scenario, we are capped to just 5 concurrent requests unless we manage a pool of ApiClients or create one per request, or ignore the async methods.
The number can be changed by configuring a dispatcher on the ApiClient builder to have a greater number of maxRequests and maxRequestsPerHost. I think there are a number of possible fixes:
- The max requests is set suitably high automatically (ideally unbounded for us)
- The max requests/max requests per host is configurable inside the merchant config
- The client can pass in an optional Function to configure the http client builder
We did a quick test with a local fork to set this higher and this helped it work for us, the change was just:
+ Dispatcher dispatcher = new Dispatcher();
+ dispatcher.setMaxRequests(500);
+ dispatcher.setMaxRequestsPerHost(500);
try {
httpClient = classHttpClient.newBuilder()
+ .dispatcher(dispatcher)
It looks like there is no significant negative impact to just setting this to Integer.MAX_VALUE - so that might be a reasonable option.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
L’issue identifie le builder de ApiClient et la configuration de son client HTTP OkHttp comme les principaux points d’entrée. Commencez par examiner comment les clients asynchrones sont construits et comment les paramètres de Dispatcher peuvent être fournis, puis déterminez laquelle des approches de configuration proposées est prévue. Le travail est terminé lorsque les requêtes asynchrones ne sont plus limitées par les cinq requêtes simultanées par hôte par défaut d’OkHttp.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- api
- Type d'issue
- Bug
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100