import com.google.common.util.concurrent.RateLimiter; import static java.lang.Thread.currentThread; /** * @desc RateLimiter 的使用案例 * * 说明: 想开发一个程序向数据库中写入数据、向中间件服务器中发送消息、对某个 * 远程 TCP 端口发送字节,若这些操作的速率无法被控制,则可能会引起数据库 * 拒绝服务、中间件宕机、TCP 服务端口无法响应等问题,借助于 RateLimiter * 就可以很好地帮助我们“匀速的控制”。 **/ public class RateLimiterExample { // 定义一个 RateLimiter ,单位时间(默认为秒)的设置为 0.5【访问速率为 0.5 / 秒】 private static RateLimiter rateLimiter = RateLimiter.create(0.5); private static void testRateLimiter() { // 在访问该方法之前首先要进行 RateLimiter 的获取,返回值为实际的获取等待开销时间 double acquire = rateLimiter.acquire(); System.out.println(currentThread() + ": elapsed seconds " + acquire); } public static void main(String[] args) { for(;;) { testRateLimiter(); } } }
RateLimiter--限流--使用案例
最新推荐文章于 2024-05-04 16:21:31 发布