hpk 1 rok temu
rodzic
commit
9be72afb30

+ 1 - 1
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/controller/TestController.java

@@ -58,7 +58,7 @@ public class TestController {
             executorService.submit(new Runnable() {
                 @Override
                 public void run() {
-                    if(rateLimitUtil.acquire("test1","http://a.com/b/c", 25, 1, RateIntervalUnit.SECONDS)){
+                    if(rateLimitUtil.acquire("test1","http://a.com/b/c", 2, 100, RateIntervalUnit.MILLISECONDS)){
                         log.info(Thread.currentThread().getName() + " : " + finalI);
                     }else{
                         log.info(Thread.currentThread().getName() + " : 限流了!!!");

+ 1 - 1
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceMaterialReportServiceImpl.java

@@ -171,7 +171,7 @@ public class BytedanceMaterialReportServiceImpl implements IBytedanceMaterialRep
             headers.put("Access-Token", accessToken);
             headers.put("Content-Type", "application/json");
             String s = null;
-            if (rateLimitUtil.acquire(devAppId, url, 10, 1, RateIntervalUnit.SECONDS)) {
+            if (rateLimitUtil.acquire(devAppId, url, 1, 100, RateIntervalUnit.MILLISECONDS)) {
                 s = HttpUtils.httpGet(url, paramsMap, headers);
             }
             JSONObject result = JSONObject.parseObject(s);

+ 4 - 3
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/utils/RateLimitUtil.java

@@ -1,5 +1,6 @@
 package cn.com.ctop.job.bytedance.utils;
 
+import cn.com.ctop.job.bytedance.data.utils.Check;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RRateLimiter;
@@ -28,10 +29,10 @@ public class RateLimitUtil {
     public boolean acquire(String devAppId, String url, long limit, long interval, RateIntervalUnit unit) {
         URI uri = URI.create(url);
         String limitKey = uri.getPath().replaceAll("/$", "").replace("/", ":");
-        String key = "rate:limit" + limitKey + ":" + devAppId;
+        String key = "rate:limit" + limitKey + (Check.isNull(devAppId) ? "" : ":" + devAppId);
         if (!initMap.containsKey(key)) {
             RRateLimiter limiter = redissonClient.getRateLimiter(key);
-            limiter.trySetRate(
+            limiter.setRate(
                     RateType.OVERALL,
                     limit,
                     interval,
@@ -39,6 +40,6 @@ public class RateLimitUtil {
             );
             initMap.put(key, true);
         }
-        return redissonClient.getRateLimiter(key).tryAcquire(1, 2, TimeUnit.SECONDS);
+        return redissonClient.getRateLimiter(key).tryAcquire(1, 1, TimeUnit.SECONDS);
     }
 }