Default heartbeat configurable (#12241)

This commit is contained in:
Albumen Kevin 2023-05-07 20:30:52 +08:00 committed by GitHub
parent 8b65828767
commit 0a7a960f39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 1 deletions

View File

@ -143,6 +143,7 @@ public interface Constants {
String DEFAULT_PROMPT = "dubbo>";
String TELNET_KEY = "telnet";
String HEARTBEAT_KEY = "heartbeat";
String HEARTBEAT_CONFIG_KEY = "dubbo.protocol.default-heartbeat";
int DEFAULT_HEARTBEAT = 60 * 1000;
String HEARTBEAT_TIMEOUT_KEY = "heartbeat.timeout";
String CONNECTIONS_KEY = "connections";

View File

@ -47,7 +47,16 @@ public class UrlUtils {
}
public static int getHeartbeat(URL url) {
return url.getParameter(Constants.HEARTBEAT_KEY, Constants.DEFAULT_HEARTBEAT);
String configuredHeartbeat = System.getProperty(Constants.HEARTBEAT_CONFIG_KEY);
int defaultHeartbeat = Constants.DEFAULT_HEARTBEAT;
if (StringUtils.isNotEmpty(configuredHeartbeat)) {
try {
defaultHeartbeat = Integer.parseInt(configuredHeartbeat);
} catch (NumberFormatException e) {
// use default heartbeat
}
}
return url.getParameter(Constants.HEARTBEAT_KEY, defaultHeartbeat);
}
/**

View File

@ -17,6 +17,7 @@
package org.apache.dubbo.remoting.utils;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.remoting.Constants;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@ -37,4 +38,12 @@ class UrlUtilsTest {
URL url = URL.valueOf("dubbo://127.0.0.1:12345?heartbeat=10000");
Assertions.assertEquals(UrlUtils.getHeartbeat(url), 10000);
}
@Test
void testConfiguredHeartbeat() {
System.setProperty(Constants.HEARTBEAT_CONFIG_KEY, "200");
URL url = URL.valueOf("dubbo://127.0.0.1:12345");
Assertions.assertEquals(200, UrlUtils.getHeartbeat(url));
System.clearProperty(Constants.HEARTBEAT_CONFIG_KEY);
}
}