提交 ddf4cde0 编写于 作者: 浅梦2013's avatar 浅梦2013

优化心跳超时处理

上级 7a116845
...@@ -32,6 +32,7 @@ import org.tio.utils.hutool.StrUtil; ...@@ -32,6 +32,7 @@ import org.tio.utils.hutool.StrUtil;
import org.tio.utils.thread.pool.DefaultThreadFactory; import org.tio.utils.thread.pool.DefaultThreadFactory;
import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer; import java.util.function.Consumer;
/** /**
...@@ -54,7 +55,7 @@ public final class MqttClientCreator { ...@@ -54,7 +55,7 @@ public final class MqttClientCreator {
*/ */
private int port = 1883; private int port = 1883;
/** /**
* 超时时间,t-io 配置,可为 null * 超时时间,t-io 配置,可为 null,默认为:5秒
*/ */
private Integer timeout; private Integer timeout;
/** /**
...@@ -337,9 +338,11 @@ public final class MqttClientCreator { ...@@ -337,9 +338,11 @@ public final class MqttClientCreator {
// 4. tioConfig // 4. tioConfig
ClientTioConfig tioConfig = new ClientTioConfig(clientAioHandler, clientAioListener, reconnConf); ClientTioConfig tioConfig = new ClientTioConfig(clientAioHandler, clientAioListener, reconnConf);
tioConfig.setName(this.name); tioConfig.setName(this.name);
// 5. mqtt 消息最大长度 // 5. 心跳超时时间
tioConfig.setHeartbeatTimeout(TimeUnit.SECONDS.toMillis(this.keepAliveSecs));
// 6. mqtt 消息最大长度
tioConfig.setReadBufferSize(this.readBufferSize); tioConfig.setReadBufferSize(this.readBufferSize);
// 6. tioClient // 7. tioClient
try { try {
TioClient tioClient = new TioClient(tioConfig); TioClient tioClient = new TioClient(tioConfig);
ClientChannelContext context = tioClient.connect(new Node(this.ip, this.port), this.timeout); ClientChannelContext context = tioClient.connect(new Node(this.ip, this.port), this.timeout);
......
...@@ -51,7 +51,7 @@ public class MqttServerAioListener extends DefaultAioListener { ...@@ -51,7 +51,7 @@ public class MqttServerAioListener extends DefaultAioListener {
public boolean onHeartbeatTimeout(ChannelContext context, Long interval, int heartbeatTimeoutCount) { public boolean onHeartbeatTimeout(ChannelContext context, Long interval, int heartbeatTimeoutCount) {
String clientId = context.getBsId(); String clientId = context.getBsId();
logger.info("Mqtt HeartbeatTimeout clientId:{} interval:{} count:{}", clientId, interval, heartbeatTimeoutCount); logger.info("Mqtt HeartbeatTimeout clientId:{} interval:{} count:{}", clientId, interval, heartbeatTimeoutCount);
return true; return false;
} }
@Override @Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册