限流,支持客户端ID查询.

This commit is contained in:
许晓东
2023-02-04 21:28:51 +08:00
parent 56621e0b8c
commit ee6defe5d2
10 changed files with 549 additions and 137 deletions

View File

@@ -1,7 +1,7 @@
package com.xuxd.kafka.console.service;
import com.xuxd.kafka.console.beans.ResponseData;
import com.xuxd.kafka.console.beans.dto.AlterClientQuotaDTO;
import com.xuxd.kafka.console.beans.vo.ClientQuotaEntityVO;
import java.util.List;
@@ -10,7 +10,7 @@ import java.util.List;
*/
public interface ClientQuotaService {
List<ClientQuotaEntityVO> getClientQuotaConfigs(List<String> types, List<String> names);
ResponseData getClientQuotaConfigs(List<String> types, List<String> names);
Object alterClientQuotaConfigs(AlterClientQuotaDTO request);
ResponseData alterClientQuotaConfigs(AlterClientQuotaDTO request);
}

View File

@@ -35,34 +35,39 @@ public class ClientQuotaServiceImpl implements ClientQuotaService {
}
@Override
public List<ClientQuotaEntityVO> getClientQuotaConfigs(List<String> types, List<String> names) {
public ResponseData getClientQuotaConfigs(List<String> types, List<String> names) {
List<String> entityNames = names == null ? Collections.emptyList() : new ArrayList<>(names);
List<String> entityTypes = types.stream().map(e -> typeDict.get(e)).filter(e -> e != null).collect(Collectors.toList());
if (entityTypes.isEmpty() || entityTypes.size() != types.size()) {
throw new IllegalArgumentException("types illegal.");
}
boolean userWithClientFilterClientOnly = false;
boolean userAndClientFilterClientOnly = false;
// only type: [user and client-id], type.size == 2
if (entityTypes.size() == 2) {
if (names.size() == 2 && StringUtils.isBlank(names.get(0)) && StringUtils.isNotBlank(names.get(1))) {
userWithClientFilterClientOnly = true;
userAndClientFilterClientOnly = true;
}
}
Map<ClientQuotaEntity, Map<String, Object>> clientQuotasConfigs = clientQuotaConsole.getClientQuotasConfigs(entityTypes,
userWithClientFilterClientOnly ? Collections.emptyList() : entityNames);
userAndClientFilterClientOnly ? Collections.emptyList() : entityNames);
List<ClientQuotaEntityVO> voList = clientQuotasConfigs.entrySet().stream().map(entry -> ClientQuotaEntityVO.from(
entry.getKey(), entityTypes, entry.getValue())).collect(Collectors.toList());
if (!userWithClientFilterClientOnly) {
return voList;
if (!userAndClientFilterClientOnly) {
return ResponseData.create().data(voList).success();
}
return voList.stream().filter(e -> names.get(1).equals(e.getClient())).collect(Collectors.toList());
List<ClientQuotaEntityVO> list = voList.stream().filter(e -> names.get(1).equals(e.getClient())).collect(Collectors.toList());
return ResponseData.create().data(list).success();
}
@Override
public Object alterClientQuotaConfigs(AlterClientQuotaDTO request) {
public ResponseData alterClientQuotaConfigs(AlterClientQuotaDTO request) {
return ResponseData.create().failed();
}
}