mirror of
https://github.com/zongzibinbin/MallChat.git
synced 2026-03-14 06:03:42 +08:00
调整项目目录
This commit is contained in:
@@ -2,9 +2,9 @@ package com.abin.mallchat.common;
|
|||||||
|
|
||||||
public interface FrequencyControlConstant {
|
public interface FrequencyControlConstant {
|
||||||
|
|
||||||
String TOTAL_COUNT_WITH_IN_FIX_TIME_FREQUENCY_CONTROLLER = "TotalCountWithInFixTime";
|
String TOTAL_COUNT_WITH_IN_FIX_TIME = "TotalCountWithInFixTime";
|
||||||
|
|
||||||
String SLIDING_WINDOW_FREQUENCY_CONTROLLER = "SlidingWindow";
|
String SLIDING_WINDOW = "SlidingWindow";
|
||||||
|
|
||||||
String TOKEN_BUCKET_FREQUENCY_CONTROLLER = "TokenBucket";
|
String TOKEN_BUCKET = "TokenBucket";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>mallchat</artifactId>
|
<artifactId>mallchat-tools</artifactId>
|
||||||
<groupId>com.abin.mallchat</groupId>
|
<groupId>com.abin.mallchat</groupId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<artifactId>frequency-control</artifactId>
|
<artifactId>mallchat-frequency-control</artifactId>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -16,7 +16,7 @@ public @interface FrequencyControl {
|
|||||||
/**
|
/**
|
||||||
* 策略
|
* 策略
|
||||||
*/
|
*/
|
||||||
String strategy() default FrequencyControlConstant.TOTAL_COUNT_WITH_IN_FIX_TIME_FREQUENCY_CONTROLLER;
|
String strategy() default FrequencyControlConstant.TOTAL_COUNT_WITH_IN_FIX_TIME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 窗口大小,默认 5 个 period
|
* 窗口大小,默认 5 个 period
|
||||||
@@ -37,7 +37,7 @@ public class FrequencyControlAspect {
|
|||||||
Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
|
Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
|
||||||
FrequencyControl[] annotationsByType = method.getAnnotationsByType(FrequencyControl.class);
|
FrequencyControl[] annotationsByType = method.getAnnotationsByType(FrequencyControl.class);
|
||||||
Map<String, FrequencyControl> keyMap = new HashMap<>();
|
Map<String, FrequencyControl> keyMap = new HashMap<>();
|
||||||
String strategy = FrequencyControlConstant.TOTAL_COUNT_WITH_IN_FIX_TIME_FREQUENCY_CONTROLLER;
|
String strategy = FrequencyControlConstant.TOTAL_COUNT_WITH_IN_FIX_TIME;
|
||||||
for (int i = 0; i < annotationsByType.length; i++) {
|
for (int i = 0; i < annotationsByType.length; i++) {
|
||||||
// 获取频控注解
|
// 获取频控注解
|
||||||
FrequencyControl frequencyControl = annotationsByType[i];
|
FrequencyControl frequencyControl = annotationsByType[i];
|
||||||
@@ -57,12 +57,12 @@ public class FrequencyControlAspect {
|
|||||||
strategy = frequencyControl.strategy();
|
strategy = frequencyControl.strategy();
|
||||||
}
|
}
|
||||||
// 将注解的参数转换为编程式调用需要的参数
|
// 将注解的参数转换为编程式调用需要的参数
|
||||||
if (FrequencyControlConstant.TOTAL_COUNT_WITH_IN_FIX_TIME_FREQUENCY_CONTROLLER.equals(strategy)) {
|
if (FrequencyControlConstant.TOTAL_COUNT_WITH_IN_FIX_TIME.equals(strategy)) {
|
||||||
// 调用编程式注解 固定窗口
|
// 调用编程式注解 固定窗口
|
||||||
List<FrequencyControlDTO> frequencyControlDTOS = keyMap.entrySet().stream().map(entrySet -> buildFixedWindowDTO(entrySet.getKey(), entrySet.getValue())).collect(Collectors.toList());
|
List<FrequencyControlDTO> frequencyControlDTOS = keyMap.entrySet().stream().map(entrySet -> buildFixedWindowDTO(entrySet.getKey(), entrySet.getValue())).collect(Collectors.toList());
|
||||||
return FrequencyControlUtil.executeWithFrequencyControlList(strategy, frequencyControlDTOS, joinPoint::proceed);
|
return FrequencyControlUtil.executeWithFrequencyControlList(strategy, frequencyControlDTOS, joinPoint::proceed);
|
||||||
|
|
||||||
} else if (FrequencyControlConstant.TOKEN_BUCKET_FREQUENCY_CONTROLLER.equals(strategy)) {
|
} else if (FrequencyControlConstant.TOKEN_BUCKET.equals(strategy)) {
|
||||||
// 调用编程式注解 令牌桶
|
// 调用编程式注解 令牌桶
|
||||||
List<TokenBucketDTO> frequencyControlDTOS = keyMap.entrySet().stream().map(entrySet -> buildTokenBucketDTO(entrySet.getKey(), entrySet.getValue())).collect(Collectors.toList());
|
List<TokenBucketDTO> frequencyControlDTOS = keyMap.entrySet().stream().map(entrySet -> buildTokenBucketDTO(entrySet.getKey(), entrySet.getValue())).collect(Collectors.toList());
|
||||||
return FrequencyControlUtil.executeWithFrequencyControlList(strategy, frequencyControlDTOS, joinPoint::proceed);
|
return FrequencyControlUtil.executeWithFrequencyControlList(strategy, frequencyControlDTOS, joinPoint::proceed);
|
||||||
@@ -58,7 +58,7 @@ public class SlidingWindowFrequencyController extends AbstractFrequencyControlSe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getStrategyName() {
|
protected String getStrategyName() {
|
||||||
return FrequencyControlConstant.SLIDING_WINDOW_FREQUENCY_CONTROLLER;
|
return FrequencyControlConstant.SLIDING_WINDOW;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,6 @@ public class TokenBucketFrequencyController extends AbstractFrequencyControlServ
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getStrategyName() {
|
protected String getStrategyName() {
|
||||||
return FrequencyControlConstant.TOKEN_BUCKET_FREQUENCY_CONTROLLER;
|
return FrequencyControlConstant.TOKEN_BUCKET;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -58,6 +58,6 @@ public class TotalCountWithInFixTimeFrequencyController extends AbstractFrequenc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getStrategyName() {
|
protected String getStrategyName() {
|
||||||
return FrequencyControlConstant.TOTAL_COUNT_WITH_IN_FIX_TIME_FREQUENCY_CONTROLLER;
|
return FrequencyControlConstant.TOTAL_COUNT_WITH_IN_FIX_TIME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user