提交 8c0759e3 编写于 作者: Y yukon

Reload the cert and private key dynamically in name server

上级 e60b6099
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
*/ */
package org.apache.rocketmq.namesrv; package org.apache.rocketmq.namesrv;
import java.io.IOException;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
...@@ -30,8 +31,11 @@ import org.apache.rocketmq.namesrv.processor.DefaultRequestProcessor; ...@@ -30,8 +31,11 @@ import org.apache.rocketmq.namesrv.processor.DefaultRequestProcessor;
import org.apache.rocketmq.namesrv.routeinfo.BrokerHousekeepingService; import org.apache.rocketmq.namesrv.routeinfo.BrokerHousekeepingService;
import org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager; import org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager;
import org.apache.rocketmq.remoting.RemotingServer; import org.apache.rocketmq.remoting.RemotingServer;
import org.apache.rocketmq.remoting.common.TlsMode;
import org.apache.rocketmq.remoting.netty.NettyRemotingServer; import org.apache.rocketmq.remoting.netty.NettyRemotingServer;
import org.apache.rocketmq.remoting.netty.NettyServerConfig; import org.apache.rocketmq.remoting.netty.NettyServerConfig;
import org.apache.rocketmq.remoting.netty.TlsSystemConfig;
import org.apache.rocketmq.srvutil.FileWatchService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -54,6 +58,7 @@ public class NamesrvController { ...@@ -54,6 +58,7 @@ public class NamesrvController {
private ExecutorService remotingExecutor; private ExecutorService remotingExecutor;
private Configuration configuration; private Configuration configuration;
private FileWatchService fileWatchService;
public NamesrvController(NamesrvConfig namesrvConfig, NettyServerConfig nettyServerConfig) { public NamesrvController(NamesrvConfig namesrvConfig, NettyServerConfig nettyServerConfig) {
this.namesrvConfig = namesrvConfig; this.namesrvConfig = namesrvConfig;
...@@ -95,6 +100,22 @@ public class NamesrvController { ...@@ -95,6 +100,22 @@ public class NamesrvController {
} }
}, 1, 10, TimeUnit.MINUTES); }, 1, 10, TimeUnit.MINUTES);
if (TlsSystemConfig.tlsMode != TlsMode.DISABLED) {
// Register a listener to reload SslContext
try {
fileWatchService = new FileWatchService(
new String[] {TlsSystemConfig.tlsServerCertPath, TlsSystemConfig.tlsServerKeyPath},
new FileWatchService.Listener() {
@Override
public void onChanged() {
((NettyRemotingServer) remotingServer).loadSslContext();
}
});
} catch (IOException e) {
log.warn("FileWatchService created error, can't load the certificate dynamically");
}
}
return true; return true;
} }
...@@ -111,12 +132,20 @@ public class NamesrvController { ...@@ -111,12 +132,20 @@ public class NamesrvController {
public void start() throws Exception { public void start() throws Exception {
this.remotingServer.start(); this.remotingServer.start();
if (this.fileWatchService != null) {
this.fileWatchService.start();
}
} }
public void shutdown() { public void shutdown() {
this.remotingServer.shutdown(); this.remotingServer.shutdown();
this.remotingExecutor.shutdown(); this.remotingExecutor.shutdown();
this.scheduledExecutorService.shutdown(); this.scheduledExecutorService.shutdown();
if (this.fileWatchService != null) {
this.fileWatchService.shutdown();
}
} }
public NamesrvConfig getNamesrvConfig() { public NamesrvConfig getNamesrvConfig() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册