From d4f977c0afa15cb5efd5c0f7ab1dc4b42c93a089 Mon Sep 17 00:00:00 2001 From: Luis Barrios Date: Fri, 13 Jan 2017 11:01:35 +0100 Subject: [PATCH] Make several low-level netty parameters configurable --- .../java/io/moquette/BrokerConstants.java | 4 ++++ .../moquette/server/netty/NettyAcceptor.java | 23 ++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/broker/src/main/java/io/moquette/BrokerConstants.java b/broker/src/main/java/io/moquette/BrokerConstants.java index 6580a7bc..591c07bf 100644 --- a/broker/src/main/java/io/moquette/BrokerConstants.java +++ b/broker/src/main/java/io/moquette/BrokerConstants.java @@ -51,4 +51,8 @@ public class BrokerConstants { public static final String HOST = "0.0.0.0"; public static final String NEED_CLIENT_AUTH = "need_client_auth"; public static final String HAZELCAST_CONFIGURATION = "hazelcast.configuration"; + public static final String NETTY_SO_BACKLOG = "netty.so_backlog"; + public static final String NETTY_SO_REUSEADDR = "netty.so_reuseaddr"; + public static final String NETTY_TCP_NODELAY = "netty.tcp_nodelay"; + public static final String NETTY_SO_KEEPALIVE = "netty.so_keepalive"; } diff --git a/broker/src/main/java/io/moquette/server/netty/NettyAcceptor.java b/broker/src/main/java/io/moquette/server/netty/NettyAcceptor.java index 733e7f77..e8d2843f 100644 --- a/broker/src/main/java/io/moquette/server/netty/NettyAcceptor.java +++ b/broker/src/main/java/io/moquette/server/netty/NettyAcceptor.java @@ -95,10 +95,21 @@ public class NettyAcceptor implements ServerAcceptor { BytesMetricsCollector m_bytesMetricsCollector = new BytesMetricsCollector(); MessageMetricsCollector m_metricsCollector = new MessageMetricsCollector(); + private int nettySoBacklog; + private boolean nettySoReuseaddr; + private boolean nettyTcpNodelay; + private boolean nettySoKeepalive; + @Override public void initialize(ProtocolProcessor processor, IConfig props, ISslContextCreator sslCtxCreator) throws IOException { - LOG.info("Initializing Netty acceptor..."); - m_bossGroup = new NioEventLoopGroup(); + LOG.info("Initializing Netty acceptor..."); + + nettySoBacklog = Integer.parseInt(props.getProperty(BrokerConstants.NETTY_SO_BACKLOG, "128")); + nettySoReuseaddr = Boolean.parseBoolean(props.getProperty(BrokerConstants.NETTY_SO_REUSEADDR, "true")); + nettyTcpNodelay = Boolean.parseBoolean(props.getProperty(BrokerConstants.NETTY_TCP_NODELAY, "true")); + nettySoKeepalive = Boolean.parseBoolean(props.getProperty(BrokerConstants.NETTY_SO_KEEPALIVE, "true")); + + m_bossGroup = new NioEventLoopGroup(); m_workerGroup = new NioEventLoopGroup(); final NettyMQTTHandler handler = new NettyMQTTHandler(processor); @@ -134,10 +145,10 @@ public class NettyAcceptor implements ServerAcceptor { } } }) - .option(ChannelOption.SO_BACKLOG, 128) - .option(ChannelOption.SO_REUSEADDR, true) - .option(ChannelOption.TCP_NODELAY, true) - .childOption(ChannelOption.SO_KEEPALIVE, true); + .option(ChannelOption.SO_BACKLOG, nettySoBacklog) + .option(ChannelOption.SO_REUSEADDR, nettySoReuseaddr) + .option(ChannelOption.TCP_NODELAY, nettyTcpNodelay) + .childOption(ChannelOption.SO_KEEPALIVE, nettySoKeepalive); try { LOG.info("Binding server. Protocol = {}, host = {}, port = {}.", host, port); // Bind and start to accept incoming connections.