带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(8)

简介: 带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(8)

带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)https://developer.aliyun.com/article/1339671?groupCode=taobaotech


image.pngDuplicateThrottlerHandler

@Slf4j
public class DuplicateThrottlerHandler implements MessageThrottlerHandler { 3
@Override
public boolean throttle(MessageThrottlerToken messageThrottlerToken, MessageThrottlerHandler- Context context) {
if (messageThrottlerToken.isThrottled()) { return false;
}
boolean throttleResult = context.throttle(messageThrottlerToken); messageThrottlerToken.markThrottled();
return throttleResult;
}
@Override
public boolean anyThrottle(List<MessageThrottlerToken> messageThrottlerTokens, MessageThrot- tlerHandlerContext context) {
if (CollectionUtils.isEmpty(messageThrottlerTokens)) { return false;
}
// 过滤掉已经被限流的消息
List<MessageThrottlerToken> needMessageThrottlerTokens = messageThrottlerTokens.stream()
.filter(messageThrottlerToken -> !messageThrottlerToken.isThrottled()).collect(Collectors.toList
());
if (CollectionUtils.isEmpty(needMessageThrottlerTokens)) {
return false;
  }
boolean throttleResult = context.anyThrottle(needMessageThrottlerTokens); needMessageThrottlerTokens.forEach(messageThrottlerToken -> messageThrottlerToken.mark-
Throttled());
return throttleResult;
}
@Override
public boolean allThrottle(List<MessageThrottlerToken> messageThrottlerTokens, MessageThrot-
tlerHandlerContext context) {
if (CollectionUtils.isEmpty(messageThrottlerTokens)) {


 

36

 

return false;

37

 

}

38

 

 

 

 

// 过滤掉已经被限流的消息

39

 

List<MessageThrottlerToken> needMessageThrottlerTokens = messageThrottlerTokens.stream()

40

 

.filter(messageThrottlerToken -> !messageThrottlerToken.isThrottled()).collect(Collectors.toList

41

());

 

if (CollectionUtils.isEmpty(needMessageThrottlerTokens)) { return false;
}
boolean throttleResult = context.allThrottle(needMessageThrottlerTokens);
needMessageThrottlerTokens.forEach(messageThrottlerToken -> messageThrottlerToken.mark-
Throttled());
return throttleResult;
  }
  }


带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)https://developer.aliyun.com/article/1339669?groupCode=taobaotech

相关文章
|
移动中间件 网络协议 容灾
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(10)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(10)
108 0
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(4)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(4)
|
设计模式 Java Maven
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)
125 0
|
存储 Java API
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
108 0
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
|
应用服务中间件 程序员 数据库
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)
110 0
|
JSON Java 测试技术
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(7)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(7)
114 0
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
|
IDE 前端开发 Java
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
|
Java Maven
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(6)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(6)