La limitation des appels de méthode à l'aide de Goyave RateLimiter classe
Je suis en train d'essayer de limiter le nombre d'appels à une méthode par seconde.
J'ai essayé de réaliser cela à l'aide de Goyave RateLimiter.
RateLimiter rateLimiter = RateLimiter.create(1.0);//Max 1 call per sec
rateLimiter.acquire();
performOperation();//The method whose calls are to be throttled.
Cependant les méthodes de l'appel ne sont pas limités à 1 par seconde, mais sont continues.
La limitation peut être réalisé à l'aide de Fil.sleep (), mais je souhaite utiliser la Goyave plutôt que sleep().
Je voudrais savoir la bonne façon de parvenir à l'appel de la méthode trottling à l'aide de Goyave RateLimiter.
J'ai vérifié la documentation pour RateLimiter et essayé d'utiliser la même mais ne pouvait pas obtenir le résultat souhaité.
Êtes-vous créer un nouveau
RateLimiter
avant chaque invocation?OriginalL'auteur sujith | 2015-08-07
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler
acquire()
sur le mêmeRateLimiter
dans chaque invocation, par exemple, par la mise à disposition dansperformOperation()
:résultats dans
rateLimiter.acquire()
va attendre le bon nombre de heures jusqu'à ce qu'il est temps pour une autre opération.Salut sujith,
acquire()
's documentation unis qui est des blocs de sorte qu'ils seront tous exécutés à la fréquence spécifiée (aussi, vous ne les verrez pas 10 lignes de sortie dans mon exemple, si ce n'était pas le cas)OriginalL'auteur Jens Hoffmann