Skip to content

Commit 8bc622c

Browse files
authored
Merge pull request #1 from hyhcoder/dev
Dev分支合并
2 parents 6591a3c + 0a2a951 commit 8bc622c

File tree

6 files changed

+133
-2
lines changed

6 files changed

+133
-2
lines changed

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<quickframe-pay.version>1.0.0-SNAPSHOT</quickframe-pay.version>
3434
<quickframe-security.version>1.0.0-SNAPSHOT</quickframe-security.version>
3535
<jjwt.version>0.9.0</jjwt.version>
36+
<guava.version>27.1-jre</guava.version>
3637
</properties>
3738

3839
<parent>
@@ -126,6 +127,12 @@
126127
<version>${jjwt.version}</version>
127128
</dependency>
128129

130+
<dependency>
131+
<groupId>com.google.guava</groupId>
132+
<artifactId>guava</artifactId>
133+
<version>${guava.version}</version>
134+
</dependency>
135+
129136
</dependencies>
130137

131138
</dependencyManagement>

quickframe-protal/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@
106106
<optional>true</optional>
107107
</dependency>
108108

109+
<dependency>
110+
<groupId>com.google.guava</groupId>
111+
<artifactId>guava</artifactId>
112+
</dependency>
113+
109114
<!-- springboot test -->
110115
<dependency>
111116
<groupId>org.springframework.boot</groupId>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.hyhcoder.quickframe.protal.module.ratelimiter;
2+
3+
import com.google.common.util.concurrent.RateLimiter;
4+
import lombok.extern.slf4j.Slf4j;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Component;
7+
8+
import java.util.concurrent.ExecutorService;
9+
import java.util.concurrent.Executors;
10+
11+
/**
12+
* @author hyhcoder
13+
* @date 2020/10/9 11:55
14+
*
15+
* 测试限流
16+
*
17+
*/
18+
@Component
19+
@Slf4j
20+
public class RateLimiterService {
21+
22+
23+
@Autowired
24+
private RateLimiter rateLimiter;
25+
26+
27+
public void rateRun(Integer code) {
28+
29+
for (int i = 0; i < 10; i++) {
30+
rateLimiter.acquire(1);
31+
log.info(code + " 执行 " + i);
32+
}
33+
34+
}
35+
36+
37+
public static void main(String[] args) throws Exception {
38+
// qps设置为5,代表一秒钟只允许处理五个并发请求
39+
RateLimiter rateLimiter = RateLimiter.create(2);
40+
41+
ExecutorService executorService = Executors.newFixedThreadPool(5);
42+
int nTasks = 10;
43+
//CountDownLatch countDownLatch = new CountDownLatch(nTasks);
44+
45+
46+
long start = System.currentTimeMillis();
47+
for (int i = 0; i < nTasks; i++) {
48+
49+
rateLimiter.acquire(1);
50+
System.out.println("处理完毕" + " " + i);
51+
}
52+
executorService.shutdown();
53+
//countDownLatch.await();
54+
long end = System.currentTimeMillis();
55+
56+
System.out.println("10 jobs gets done by 5 threads concurrently in " + (end - start) + " milliseconds");
57+
58+
}
59+
60+
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.hyhcoder.quickframe.protal.module.ratelimiter.config;
2+
3+
import com.google.common.util.concurrent.RateLimiter;
4+
import org.springframework.context.annotation.Bean;
5+
import org.springframework.context.annotation.Configuration;
6+
7+
/**
8+
* @author hyhcoder
9+
* @date 2020/10/9 14:40
10+
*/
11+
@Configuration
12+
public class RateLimiterConfig {
13+
14+
15+
@Bean
16+
public RateLimiter myRateLimiter() {
17+
18+
RateLimiter rateLimiter = RateLimiter.create(2);
19+
//RateLimiter.create()
20+
return rateLimiter;
21+
}
22+
23+
}

quickframe-protal/src/main/java/com/hyhcoder/quickframe/protal/test/TestController.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import com.hyhcoder.quickframe.common.core.reqres.response.ResponseData;
44
import com.hyhcoder.quickframe.protal.module.rabbitmq.MessageSender;
5+
import com.hyhcoder.quickframe.protal.module.ratelimiter.RateLimiterService;
56
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.transaction.annotation.Transactional;
68
import org.springframework.web.bind.annotation.RequestMapping;
79
import org.springframework.web.bind.annotation.RequestParam;
810
import org.springframework.web.bind.annotation.RestController;
@@ -18,15 +20,19 @@ public class TestController {
1820
@Autowired
1921
private MessageSender messageSender;
2022

23+
@Autowired
24+
private RateLimiterService rateLimiterService;
25+
2126

2227
@RequestMapping("/sendMessage")
2328
private ResponseData sendMessage(@RequestParam("message") String message) {
2429

25-
messageSender.sendMessage(message);
30+
//messageSender.sendMessage(message);
2631
return ResponseData.success();
2732
}
2833

2934
@RequestMapping("/sendMessageTransaction")
35+
@Transactional
3036
private ResponseData sendMessageTransaction(@RequestParam("message") String message) {
3137

3238
messageSender.sendMessageTransaction(message);
@@ -41,5 +47,12 @@ private ResponseData sendMessageAck(@RequestParam("message") String message) {
4147
return ResponseData.success();
4248
}
4349

50+
@RequestMapping("/raterun")
51+
private ResponseData raterun(@RequestParam("code") Integer code) {
52+
53+
rateLimiterService.rateRun(code);
54+
return ResponseData.success();
55+
}
56+
4457

4558
}
Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,39 @@
11
package com.hyhcoder.quickframe.protal;
22

3+
import com.hyhcoder.quickframe.mapper.OmsMenuMapper;
34
import org.junit.Test;
45
import org.junit.runner.RunWith;
6+
import org.springframework.beans.factory.annotation.Autowired;
57
import org.springframework.boot.test.context.SpringBootTest;
68
import org.springframework.test.context.junit4.SpringRunner;
79

10+
import java.util.ArrayList;
11+
import java.util.List;
12+
813
@RunWith(SpringRunner.class)
914
@SpringBootTest
1015
public class ProtalApplicationTests {
1116

17+
@Autowired
18+
private OmsMenuMapper omsMenuMapper;
19+
1220
@Test
1321
public void contextLoads() {
14-
22+
23+
List<Integer> a = new ArrayList<>();
24+
a.add(2);
25+
a.add(3);
26+
a.add(4);
27+
a.add(3);
28+
List<Integer> b = new ArrayList<>();
29+
for (Integer integer : a) {
30+
31+
if (!b.contains(integer)) {
32+
b.add(integer);
33+
}
34+
}
35+
36+
System.out.println(b.size());
1537
}
1638

1739
}

0 commit comments

Comments
 (0)