Taxa de empacotamento que limita a chamada da API

Eu tenho acesso a uma chamada de API queaceita uma taxa máxima de chamadas por segundo. Se a taxa for excedida, umexceção é lançada.

Gostaria de agrupar esta chamada em uma abstração que faça o necessário para manter a taxa de chamada abaixo do limite. Funcionaria como um roteador de rede: manipulando várias chamadas e retornando os resultados ao chamador correto, preocupado com a taxa de chamadas. O objetivo é tornar o código de chamada o mais inconsciente possível sobre essa limitação. Caso contrário, todas as partes do código que receberem essa chamada teriam que ser agrupadas em um try-catch!

Por exemplo: Imagine que você pode chamar um método a partir de uma API externa que pode adicionar 2 números. Essa API pode ser chamada5 vezes por segundo. Qualquer coisa maior que isso resultará em uma exceção.

Para ilustrar o problema, o serviço externo que limita a taxa de chamadas é semelhante ao da resposta a esta pergunta

Como criar uma API de limitação de taxa com o Observables?

INFORMAÇÃO ADICIONAL:

Como você não deseja se preocupar com esse limite sempre que chamar esse método a partir de qualquer parte do seu código, pense em criar um método de invólucro que você poderia chamar sem se preocupar com o limite de taxa. Por dentro, você se preocupa com o limite, mas, por fora, expõe um método assíncrono simples.

É semelhante a um servidor web. Como ele retorna o pacote de resultados correto ao cliente correto?

Vários chamadores chamarão esse método e obterão os resultados à medida que forem chegando. Essa abstração deve agir como um proxy.

Como eu pude fazer isso?

Tenho certeza de que a empresa do método wrapper deve ser como

public async Task<Results> MyMethod()

E dentro do método ele executará a lógica, talvez usando Extensões Reativas (Buffer). Eu não sei.

Mas como? Quero dizer, várias chamadas para esse método devem retornar os resultados para o chamador correto. Isso é possível?

Muito obrigado!

questionAnswers(3)

yourAnswerToTheQuestion