Wpis z mikrobloga

Przyjaciele pomóżcie, mam api na którym jest rate limiting, chce wycisnąć z niego ile się da, ale na każdy endpoint jest inny rate limit - jak to sensownie zrobić, żeby appka w springu mi "poczekała" w przypadku przekroczenia określonego limitu zamiast walić request który się skończy statusem 429? Mogę niby kombinować z jakimiś cronami idealnie wyliczonymi, ale ten rate limit będzie się kiedyś zmieniał, no i wydaje mi się to prymitywnym podejściem. Czy ktoś z was może ugryzł taki temat w pracy lub poza?
#java #programowanie #spring #kotlin #programista15k
  • 11
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@throaway: Scheduled Tasks (czyli nie cron, a kodowo wywołania) i sobie w tych odstępach wywołuj czego tam używasz np. RestTemplate czy Feign.
  • Odpowiedz
@MatMKA: apikey @mk321: tylko mam problem, ze musze wywolac request ktory ma np limit 200 na sekunde, z niego wywolac request ktory ma limit 1200 na sekunde i tutaj zwraca sie lista i na kazdym elemencie znowu strzelac requestem
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@throaway: mówisz że rate limit jest na każdy endpoint.

No to zrób sobie pulę wątków (osobna pula na każdy endpoint z rate limit) lub mapę (typu ) i zamiast wykonywać od razu co masz robić to wrzucaj do puli/mapy. I osobno z tej puli pobieraj requesty do wykonania żeby nie przekroczyć limitu i zwracaj wynik (jakiś callback lub CompletableFuture). Lub jak masz to po prostu wrzucaj na kolejkę (np. Kafka) i
  • Odpowiedz
@mk321: dzięki wielkie za linki! jeśli chodzi o programowanie reaktywne (webflux) i te gotowce to rozumiem, ze bedzie mi blokowac thready i dupa z reaktywnosci?
edit: znalazlem reaktywne wersje, super :D wielkie dzięki mirku!
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@throaway: o z reaktywnego to nie wiem. Nie ma tam jakiejś magii, że to co blokujące to można opakować, odłożyć na bok i dalej działać? Pewnie to nie takie proste. Szukaj czy nie ma odpowiedników tych bibliotek tylko ze wsparciem reaktywnym.
  • Odpowiedz