8900966d71
- DualBucket 인터페이스에서 클라이언트 메서드 분리 → ClientDualBucket 신규 인터페이스 - DualInflowControlManager 클라이언트 구현 분리 → ClientDualInflowControlManager - DualInflowControlManager @Component 제거 (ClientDualInflowControlManager가 단일 빈) - makeBucket: Bandwidth.simple → Bandwidth.classic + Refill.greedy/intervally 변경 (threshold 버킷을 진짜 기간 쿼터로 동작하도록 수정) - DualRequestProcessor → eapim-online custom 패키지로 이동 (삭제) - ReloadInflowClientControlCommand / RemoveInflowClientControlCommand: instanceof 타입을 ClientDualInflowControlManager로 변경 - 단위 테스트: ClientDualInflowControlManagerMetricsTest 추가, DualInflowControlManagerMetricsTest 클라이언트 케이스 분리 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
61 lines
1.9 KiB
Java
61 lines
1.9 KiB
Java
package com.eactive.eai.agent.inflow;
|
|
|
|
import com.eactive.eai.agent.command.Command;
|
|
import com.eactive.eai.agent.command.CommandException;
|
|
import com.eactive.eai.common.inflow.AbstractInflowControlManager;
|
|
import com.eactive.eai.common.inflow.InflowControlUtil;
|
|
import com.eactive.eai.common.inflow.dual.ClientDualInflowControlManager;
|
|
import com.eactive.eai.common.util.Logger;
|
|
|
|
public class ReloadInflowClientControlCommand extends Command {
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
public ReloadInflowClientControlCommand() {
|
|
super("ReloadInflowClientControlCommand");
|
|
}
|
|
|
|
public Object execute() throws CommandException {
|
|
Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
|
|
if (logger.isInfo())
|
|
logger.info(this.name + " is executed");
|
|
|
|
if (!(args instanceof String)) {
|
|
String rspErrorCode = "RECEAIMCM001";
|
|
String msg = makeException(rspErrorCode, null);
|
|
if (logger.isError())
|
|
logger.error(msg);
|
|
throw new CommandException(msg);
|
|
}
|
|
|
|
String keyName = (String) args;
|
|
try {
|
|
AbstractInflowControlManager base = InflowControlUtil.getInflowControlManager();
|
|
if (!(base instanceof ClientDualInflowControlManager)) {
|
|
throw new IllegalStateException("ClientDualInflowControlManager 가 활성화되지 않았습니다.");
|
|
}
|
|
ClientDualInflowControlManager manager = (ClientDualInflowControlManager) base;
|
|
|
|
if (keyName != null) {
|
|
if ("ALL".equals(keyName)) {
|
|
manager.reloadClient();
|
|
if (logger.isWarn())
|
|
logger.warn(this.name + "] all rule Reload.");
|
|
} else {
|
|
manager.reloadClient(keyName);
|
|
if (logger.isWarn())
|
|
logger.warn(this.name + "] " + keyName + " Reload.");
|
|
}
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
String rspErrorCode = "RECEAIMCM002";
|
|
String msg = makeException(rspErrorCode, e);
|
|
if (logger.isError())
|
|
logger.error(msg, e);
|
|
throw new CommandException(msg);
|
|
}
|
|
return "success";
|
|
}
|
|
}
|