Commit 9156ccfb68fe1b1036296adcce2cbefbe45a68d8

Authored by Andrew Shvayka
Committed by GitHub
2 parents 12280f81 2731ff69

Merge pull request #1662 from yefimov-andrey/mqtt-keep-alive-fix

Added MQTT keep alive parameter
@@ -469,6 +469,7 @@ transport: @@ -469,6 +469,7 @@ transport:
469 boss_group_thread_count: "${NETTY_BOSS_GROUP_THREADS:1}" 469 boss_group_thread_count: "${NETTY_BOSS_GROUP_THREADS:1}"
470 worker_group_thread_count: "${NETTY_WORKER_GROUP_THREADS:12}" 470 worker_group_thread_count: "${NETTY_WORKER_GROUP_THREADS:12}"
471 max_payload_size: "${NETTY_MAX_PAYLOAD_SIZE:65536}" 471 max_payload_size: "${NETTY_MAX_PAYLOAD_SIZE:65536}"
  472 + so_keep_alive: "${NETTY_SO_KEEPALIVE:true}"
472 # MQTT SSL configuration 473 # MQTT SSL configuration
473 ssl: 474 ssl:
474 # Enable/disable SSL support 475 # Enable/disable SSL support
@@ -17,6 +17,7 @@ package org.thingsboard.server.transport.mqtt; @@ -17,6 +17,7 @@ package org.thingsboard.server.transport.mqtt;
17 17
18 import io.netty.bootstrap.ServerBootstrap; 18 import io.netty.bootstrap.ServerBootstrap;
19 import io.netty.channel.Channel; 19 import io.netty.channel.Channel;
  20 +import io.netty.channel.ChannelOption;
20 import io.netty.channel.EventLoopGroup; 21 import io.netty.channel.EventLoopGroup;
21 import io.netty.channel.nio.NioEventLoopGroup; 22 import io.netty.channel.nio.NioEventLoopGroup;
22 import io.netty.channel.socket.nio.NioServerSocketChannel; 23 import io.netty.channel.socket.nio.NioServerSocketChannel;
@@ -50,6 +51,8 @@ public class MqttTransportService { @@ -50,6 +51,8 @@ public class MqttTransportService {
50 private Integer bossGroupThreadCount; 51 private Integer bossGroupThreadCount;
51 @Value("${transport.mqtt.netty.worker_group_thread_count}") 52 @Value("${transport.mqtt.netty.worker_group_thread_count}")
52 private Integer workerGroupThreadCount; 53 private Integer workerGroupThreadCount;
  54 + @Value("${transport.mqtt.netty.so_keep_alive}")
  55 + private boolean keepAlive;
53 56
54 @Autowired 57 @Autowired
55 private MqttTransportContext context; 58 private MqttTransportContext context;
@@ -69,7 +72,8 @@ public class MqttTransportService { @@ -69,7 +72,8 @@ public class MqttTransportService {
69 ServerBootstrap b = new ServerBootstrap(); 72 ServerBootstrap b = new ServerBootstrap();
70 b.group(bossGroup, workerGroup) 73 b.group(bossGroup, workerGroup)
71 .channel(NioServerSocketChannel.class) 74 .channel(NioServerSocketChannel.class)
72 - .childHandler(new MqttTransportServerInitializer(context)); 75 + .childHandler(new MqttTransportServerInitializer(context))
  76 + .childOption(ChannelOption.SO_KEEPALIVE, keepAlive);
73 77
74 serverChannel = b.bind(host, port).sync().channel(); 78 serverChannel = b.bind(host, port).sync().channel();
75 log.info("Mqtt transport started!"); 79 log.info("Mqtt transport started!");