Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public class ProxyConfig implements ConfigFile {
public final static String DEFAULT_CONFIG_FILE_NAME = "rmq-proxy.json";
private static final int PROCESSOR_NUMBER = Runtime.getRuntime().availableProcessors();
private static final String DEFAULT_CLUSTER_NAME = "DefaultCluster";
private static final String DEFAULT_MESSAGE_DELAY_LEVEL =
"1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";

private static String localHostName;

Expand Down Expand Up @@ -229,7 +231,7 @@ public class ProxyConfig implements ConfigFile {
private boolean enableAclRpcHookForClusterMode = false;

private boolean useDelayLevel = false;
private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";
private String messageDelayLevel = DEFAULT_MESSAGE_DELAY_LEVEL;
private transient ConcurrentSkipListMap<Integer /* level */, Long/* delay timeMillis */> delayLevelTable = new ConcurrentSkipListMap<>();

private String metricCollectorMode = MetricCollectorMode.OFF.getModeString();
Expand Down Expand Up @@ -330,8 +332,12 @@ public void parseDelayLevel() {
timeUnitTable.put("d", 1000L * 60 * 60 * 24);

String levelString = this.getMessageDelayLevel();
if (StringUtils.isBlank(levelString)) {
log.warn("messageDelayLevel is blank, use default delay level config");
levelString = DEFAULT_MESSAGE_DELAY_LEVEL;
}
try {
String[] levelArray = levelString.split(" ");
String[] levelArray = levelString.trim().split("\\s+");
for (int i = 0; i < levelArray.length; i++) {
String value = levelArray[i];
String ch = value.substring(value.length() - 1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,31 @@ public void initDataShouldResolveBlankLocalServeAddr() {
assertThat(StringUtils.isBlank(proxyConfig.getLocalServeAddr())).isFalse();
assertThat(proxyConfig.getRemotingAccessAddr()).isEqualTo(proxyConfig.getLocalServeAddr());
}

@Test
public void parseDelayLevelShouldTolerateExtraWhitespace() {
ProxyConfig proxyConfig = new ProxyConfig();
proxyConfig.setMessageDelayLevel(" 1s 5s\n10s\t30s ");

proxyConfig.parseDelayLevel();

assertThat(proxyConfig.getDelayLevelTable())
.containsEntry(1, 1000L)
.containsEntry(2, 5000L)
.containsEntry(3, 10000L)
.containsEntry(4, 30000L);
}

@Test
public void parseDelayLevelShouldUseDefaultWhenConfigIsBlank() {
ProxyConfig proxyConfig = new ProxyConfig();
proxyConfig.setMessageDelayLevel(" \t ");

proxyConfig.parseDelayLevel();

assertThat(proxyConfig.getDelayLevelTable())
.containsEntry(1, 1000L)
.containsEntry(2, 5000L)
.containsEntry(18, 7200000L);
}
}
Loading