Found 205 repositories(showing 30)
In this code we demonstrate how to build, deploy, connect resilient Java microservices leveraging Istio service mesh. We show how to configure and use circuit breakers, timeouts/retries, rate limits and other advanced resiliency features from Istio without changing the application code.
cpthack
基于Guava的RateLimiter、Redis封装了并发控制、限流管理功能,支持配置文件和硬编码形式进行限流控制,控制粒度在方法级别,使用简单。
houbb
🎃Rate limit for java.(java 渐进式限流工具框架,支持 spring springboot 字节码)
PwnPress
A tool developed in Java for enumerating and scanning WordPress websites. It is completely free, open source and with no API rate limit.
Rapter1990
Spring Boot Rate Limiter with Redis (Spring Boot, Java 21, JUnit, Integration Test, Github Actions, Test Container, Docker, Redis)
danielbryantuk
A Java-based Rate Limiter service for the Ambassador API gateway
MisterFixx
A java proxy server to Mojang's profile API, to avoid rate limits and serve profiles faster.
client-side
Java Rate Limiter Derived From Googles' Guava Implementation
raphaeldelio
No description available
Rapter1990
Case Study - Openpayd Foreign Exchange Example (Spring Boot, Java 21, Docker, Maven, JUnit Test, Integration Test, In-Memory Database (H2 Database), Github Actions, Spring Open Api, Mapstruct, Spring Cache, Resillience4j (Rate Limiter))
frederickzhao8-hub
Distributed API rate limiter built with Java, Spring Boot, and Redis.
JPhant: Java Library for PHant Access https://github.com/JPhant/JPhant_Java_Based_Phant_Library *** Features *** Fully Configurable (Public/Private/Delete Keys, Fieldnames, BaseURL, ProxyHost & Port, use GET or POST.) Can Handle multiple simultaneous Phant Data Streams in same program. Can use GET or POST (Using POST will encrypt your PrivateKey and Data in transit.) Can Send/Receive any Character 0 through 127 Support for Paging (Data > 50K.) * Add Data using Get or Post Methods (Configurable.) * Get Data in efficient Format: String[][] aaExample = { {"Field1", "Field2"}, {"Value1", "Value2"}... } * (Or Get Data in Raw Formats - Csv, Json, Jsonp.) * Clear all Data * Get Status in efficient Format (a Stats class encapsulating Cap, PageCount, Remaining, and Used.) * (Or Get Status in Raw Formats - Csv, Json, Jsonp.) * Get Rate Limits (Limit, Remaining, Reset - only valid after addData().) * Convert to/from supported Data Structures (String[][] and ArrayList<ArrayList<String>>.) * Smart CSV Extraction (handles embedded Quotes, Commas, Carriage Returns, and Line Feeds.) * Automatic Retries on HTTPConnection Errors (up to 5 retries.) * Can optionally use a ProxyHost and Port (if you're behind a company Firewall/Proxy Server.) ------------------------------------------------------------------------- I'm going to be very busy for the next few months, and can't develop this further. I hereby put this "as is" in the Public Domain, I hope someone will pick it up and run with it. Here is a quick overview... ------------------------------------------------------------------------- To use: 1) --- Initialize --- 1a) Create a class that implements JPhantConfig and enter the appropriate Keys and Fieldnames. (see JPhant_Config_0.java for an example.) 2) --- Configure --- 2a) Instantiate a JPhant instance, for example... JPhant jPhant0 = new JPhant(new JPhant_Config_0()); 3) --- High Level Commands --- 3a) To Clear All data... jPhant0.clear(); 3b) To Add Data (Fieldnames must exactly match Fields Phant Stream was created with... String[][] aasAddData = new String[][] { {"Field1", "Field2"}, {"Value1", "Value2"} }; jPhant0.addData(aasAddData); 3c) To Get Data... String[][] aasGetData = jPhant0.getData(); for(String[] asRow : aasGetData) { for(String sField : asRow) { System.out.print(sField+", "); } System.out.println(); } 3d) To Get Status... jPhant.Stats jpsStats0 = jPhant0.getStatus(); System.out.println("jpsStats0="+jpsStats0.toString()); 3e) To Get Rate Limits... System.out.println("getXRateLimitLimit()="+jPhant0.getXRateLimitLimit()); System.out.println("getXRateLimitRemaining()="+jPhant0.getXRateLimitRemainin()); System.out.println("getXRateLimitReset()="+jPhant0.getXRateLimitReset()); 4) --- Low Level Raw Data Commands --- 4a) To get Data in Raw Format... System.out.println("getData.CSV="+jPhant0.getData(JPhant.Format.csv).replace("\r", "\\r").replace("\n", "\\n")); System.out.println("getData.JSON="+jPhant0.getData(JPhant.Format.json).replace("\r", "\\r").replace("\n", "\\n")); System.out.println("getData.JSONP="+jPhant0.getData(JPhant.Format.jsonp).replace("\r", "\\r").replace("\n", "\\n")); 4b) To get Status in Raw Format... System.out.println("getStatus.CSV="+jPhant0.getStatus(JPhant.Format.csv).replace("\r", "\\r").replace("\n", "\\n")); System.out.println("getStatus.JSON="+jPhant0.getStatus(JPhant.Format.json).replace("\r", "\\r").replace("\n", "\\n")); System.out.println("getStatus.JSONP="+jPhant0.getStatus(JPhant.Format.jsonp).replace("\r", "\\r").replace("\n", "\\n")); ------------------------------------------------------------------------- Phant returns data in CSV Format like... Field1, Field2 Value1, Value2 ... , ... So the most obvious data structure to use is something like... String[][] aaExample = { {"Field1", "Field2"}, {"Value1", "Value2"}... } And the Collection equivalent... ArrayList<ArrayList<String>> alalData = new ArrayList<ArrayList<String>>(); There are functions to support converting to/from String[][] and ArrayList<ArrayList<String>>. toStringArrayListOfStringArrayLists(String[][]) toStringArrayOfStringArrays(ArrayList<ArrayList<String>>) As a convenience, if these two functions are passed null, they return the first element filled in with Fieldnames. You can handle multiple Phant Streams in one program with separate Phant variables and Configurations, like... JPhant jPhant0 = new JPhant(new JPhant_Config_0()); JPhant jPhant1 = new JPhant(new JPhant_Config_1()); ------------------------------------------------------------------------- What isn't working yet... * It should support the entire UTF-8 Character set, but appears to only work for characters 0 through 127. * Has support for Paging when Data > 50K, but doesn't appear to be working as I expected. * I was going to add support for the Timestamp Field that Phant automatically returns. * AddData() only adds the first row of data passed to it, I was going to add Bulk Updates when multiple rows of data are passed in. ------------------------------------------------------------------------- I hope that when this other project that is pulling me away is over, I can get back to this. In the mean time, feel free to develop it as you see fit.
hn3000
Simple rate limiting implementation for java
ahmad-raza-4
Distributed Rate Limiter in Java
sazlin
No description available
shubhamharitash
Thread safe implementaion of ratelimter using core java and singleton design pattern
apkuznetsov
Marketplace, Cashback Payment. Java, Kotlin. Configuration, Eureka, Gateway, Keycloak. Circuit Breaker, Rate Limit, Retry, Correlation Trace. REST API for Marketplace and STOMP over WebSocket General Chat. Spring Cloud. Scrum, Spring Boot, PostgreSQL, Docker, JWT, Gradle, CI/CD, Swagger, JUnit, TestContainers, Hibernate, Git, Checkstyle, UML
On-line advertising has been one of the most booming markets since the first on-line ads showed up on the web and now it is a market of hundreds of billions of dollars globally and it still has not lost the steam. Google got $32.2 billion in advertising revenue which is 97% of Google’s total revenue in Q3 2010 - Q2 2011. By far the most lucrative venue for on-line advertising has been search, and much of the effectiveness of search advertising comes from the “AdWords” model of matching search queries to advertisements. For this project, you need to use Java to access an Oracle database and accomplish an on-line ads auction system using various bidding algorithms. 1.1.1 Definition of the AdWords Problem We are going to consider on-line algorithms for solving the AdWords problem, which is defined as follows. Given: • A set of bids by advertisers for search queries; • A click-through rate for each advertiser-query pair; • A budget for each advertiser; • A limit on the number of ads to be displayed with each search query. Respond to each search query with a set of advertisers such that: • The size of the set is no larger than the limit on the number of ads per query. • Each advertiser has bid on the search query. • Each advertiser has enough budget left to pay for the ad if it is clicked upon. The data set consists of three database tables: (primary keys are underlined) Queries(qid:INTEGER, query:VARCHAR(100)) Advertisers(advertiserId:INTEGER, budget:FLOAT, ctc:FLOAT) Keywords(advertiserId:INTEGER, keyword:VARCHAR(100), bid:FLOAT)
kidminks
Java api rate limiter library
miladra
Java-based backend application that implements sample annotation based rate limiter
kaustavbecs
Sliding Window with Counter RateLimiter - Java
poshjosh
Light weight rate limiting library for java web apps, based on https://github.com/poshjosh/rate-limiter
RutwijGhadge
Java Rate Limiter using Sliding Window algorithm with Deque. Thread-safe, per-user request limiting implementation.
ayeminoosc
This rate limit service is java implementation of golang/gRPC - https://github.com/envoyproxy/ratelimit but not a direct translation of it. It is designed to enable generic rate limit scenarios from different types of applications.
massaging
python tool that checks minecraft java username availability using 5 api fallback systems with rate limit handling and 4-letter username generator
BatuhanBaysal
Enterprise Banking Core: Java 17 & Spring Boot 3.4 Modular Monolith. Robust security with Keycloak (OIDC/RBAC). Resilience4j (Circuit Breaker, Rate Limiter, Bulkhead). Async messaging via RabbitMQ. Full Observability: Prometheus, Grafana, Jaeger & Loki. Managed with Liquibase & Redis. SonarQube A-Rated (Zero Technical Debt).
telos-tech
Java SDK for the Loops.so API with full endpoint coverage, type-safe models, sync & async support, and rate‑limit‑aware error handling.
jaynaik707
Fair Price Shop is an Java based application for public distribution system(Ration Shops). This application can be used by shop vendors to maintain database of all the customers.This shops provide food commodities at cheaper rate whose income is up to a limit(BPL). This application uses Java Swing as front-end and MySQL as a back-end
Assiv
ERROR The server has stopped responding! 12.06 20:34:40 [Server] ERROR Please report this to http://www.spigotmc.org/ 12.06 20:34:40 [Server] ERROR Be sure to include ALL relevant console errors and Minecraft crash reports 12.06 20:34:40 [Server] ERROR Spigot version: git-Spigot-21fe707-e1ebe52 (MC: 1.8.8) 12.06 20:34:40 [Server] ERROR ------------------------------ 12.06 20:34:40 [Server] ERROR Server thread dump (Look for plugins here before reporting to Spigot!): 12.06 20:34:40 [Server] ERROR ------------------------------ 12.06 20:34:40 [Server] ERROR Current Thread: Server thread 12.06 20:34:40 [Server] ERROR PID: 16 | Suspended: false | Native: false | State: TIMED_WAITING 12.06 20:34:40 [Server] ERROR Stack: 12.06 20:34:40 [Server] ERROR java.lang.Thread.sleep(Native Method) 12.06 20:34:40 [Server] ERROR org.primesoft.asyncworldedit.taskdispatcher.TaskDispatcher.run(TaskDispatcher.java:211) 12.06 20:34:40 [Server] ERROR org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) 12.06 20:34:40 [Server] ERROR org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) 12.06 20:34:40 [Server] ERROR net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) 12.06 20:34:40 [Server] ERROR net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) 12.06 20:34:40 [Server] ERROR net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) 12.06 20:34:40 [Server] ERROR net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) 12.06 20:34:40 [Server] ERROR java.lang.Thread.run(Thread.java:748) 12.06 20:34:40 [Server] ERROR ------------------------------ 12.06 20:34:40 [Server] ERROR Entire Thread Dump: 12.06 20:34:40 [Server] ERROR ------------------------------ 12.06 20:34:40 [Server] ERROR Current Thread: Keep-Alive-Timer 12.06 20:34:40 [Server] ERROR PID: 91 | Suspended: false | Native: false | State: TIMED_WAITING 12.06 20:34:40 [Server] ERROR Stack: 12.06 20:34:40 [Server] ERROR java.lang.Thread.sleep(Native Method) 12.06 20:34:40 [Server] ERROR sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:172) 12.06 20:34:40 [Server] ERROR java.lang.Thread.run(Thread.java:748) 12.06 20:34:40 [Server] ERROR ------------------------------ 12.06 20:34:40 [Server] ERROR Current Thread: pool-41-thread-1 12.06 20:37:18 [Server] WARN Found Vault v1.5.6-b49 for chat hook. 12.06 20:37:18 [Server] WARN Using After v1_8 (v1_8_R3) Fanciful Library! 12.06 20:37:18 [Server] ERROR Error occurred while enabling LinkItem v1.0-STABLE (Is it up to date?) 12.06 20:37:18 [Server] INFO java.lang.NullPointerException 12.06 20:37:18 [Server] INFO at me.icodetits.linkitem.Main.onEnable(Main.java:35) ~[?:?] 12.06 20:37:18 [Server] INFO at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Multicraft] Skipped 35 lines due to rate limit (30/s) 12.06 20:37:18 [Server] Startup Done (20.249s)! For help, type "help" or "?" 12.06 20:37:18 [Server] INFO Searching for updates. 12.06 20:37:18 [Server] INFO Running resynchronization of Factions Top expect some lag! 12.06 20:37:18 [Server] WARN Task #124 for FactionsTop v4.0 generated an exception 12.06 20:37:18 [Server] INFO java.lang.NoSuchMethodError: com.massivecraft.factions.Faction.isWilderness()Z 12.06 20:37:18 [Server] INFO at me.determined.ftop.calc.ReSync.<init>(ReSync.java:64) ~[?:?] 12.06 20:37:18 [Server] INFO at me.determined.ftop.FTop$1.run(FTop.java:83) ~[?:?] 12.06 20:37:18 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] 12.06 20:37:18 [Server] INFO at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131] 12.06 20:37:18 [Server] INFO Running updater .. 12.06 20:37:18 [Server] INFO Turned off the whitelist 12.06 20:37:18 [Server] INFO Command-Finish has been successfully executed! 12.06 20:37:18 [Server] WARN java.net.UnknownHostException: api.bukget.org 12.06 20:37:18 [Server] WARN at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) 12.06 20:37:18 [Server] WARN at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 12.06 20:37:18 [Server] WARN at java.net.Socket.connect(Socket.java:589) 12.06 20:37:18 [Server] WARN at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668) 12.06 20:37:18 [Server] WARN at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173) 12.06 20:37:18 [Server] WARN at sun.net.NetworkClient.doConnect(NetworkClient.java:180) 12.06 20:37:18 [Server] WARN at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) 12.06 20:37:18 [Server] WARN at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) 12.06 20:37:18 [Server] WARN at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264) 12.06 20:37:18 [Server] WARN at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367) 12.06 20:37:18 [Server] WARN at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191) 12.06 20:37:18 [Server] WARN at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138) 12.06 20:37:19 [Multicraft] Skipped 32 lines due to rate limit (30/s) 12.06 20:37:19 [Server] INFO Fetching all due players... 12.06 20:37:22 [Server] ERROR Could not fetch due players queue 12.06 20:37:22 [Server] INFO java.net.SocketTimeoutException: connect timed out 12.06 20:37:22 [Server] INFO at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_131] 12.06 20:37:22 [Server] INFO at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_131] 12.06 20:37:22 [Server] INFO at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_131] 12.06 20:37:22 [Server] INFO at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_131] 12.06 20:37:22 [Server] INFO at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_131] 12.06 20:37:22 [Server] INFO at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_131] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.platform.Platform.connectSocket(Platform.java:124) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:187) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.connection.RealConnection.buildConnection(RealConnection.java:173) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.connection.RealConnection.connect(RealConnection.java:114) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:193) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:129) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:98) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:109) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:124) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:170) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.internal.okhttp3.RealCall.execute(RealCall.java:60) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.client.ProductionApiClient.get(ProductionApiClient.java:66) ~[BuycraftX.jar:?] 12.06 20:37:22 [Server] INFO at net.buycraft.plugin.client.ProductionApiClient.retrieveDueQueue(ProductionApiClient.java:96) ~[BuycraftX.jar:?] 12.06 20:37:23 [Multicraft] Skipped 7 lines due to rate limit (30/s) 12.06 20:37:23 [Server] INFO Server returned HTTP response code: 504 for URL: http://mcstats.org/report/AsyncWorldEdit 12.06 20:37:29 [Server] INFO The servers TPS is bellow 3.9, is it lagging or crashed? 12.06 20:37:39 [Server] INFO The servers TPS is bellow 0.0, is it lagging or crashed? Send
sonii-shivansh
A distributed, high-throughput API Rate Limiter built with Java, Spring Boot, and Redis. Uses the Token Bucket algorithm for efficient, scalable request throttling in a microservices architecture.