提交 46a2d020 编写于 作者: 如梦技术's avatar 如梦技术 🐛

mica-mqtt server、client 添加 `tioConfigCustomize` 方法,方便更大程度的自定义 TioConfig。

上级 c28f2d24
......@@ -2,7 +2,8 @@
## 发行版本
### v1.3.0 - 2022-04-23
:sparkles: mqtt-server 简化,默认多设备可以直接互相订阅和处理消息。
:sparkles: mica-mqtt mqtt-server 简化,默认多设备可以直接互相订阅和处理消息。
:sparkles: mica-mqtt server、client 添加 `tioConfigCustomize` 方法,方便更大程度的自定义 TioConfig。
:sparkles: 拆分 mica-mqtt-client-spring-boot-starter 和 mica-mqtt-server-spring-boot-starter gitee #I4OTC5
:sparkles: mica-mqtt-spring-boot-example client 添加重连动态更新 clientId、username、password 示例。
:sparkles: mica-mqtt server 添加根据踢出指定 clientId 的 http api 接口。
......
......@@ -27,6 +27,7 @@ import org.tio.client.TioClient;
import org.tio.client.intf.ClientAioHandler;
import org.tio.client.intf.ClientAioListener;
import org.tio.core.Node;
import org.tio.core.TioConfig;
import org.tio.core.ssl.SslConfig;
import org.tio.utils.hutool.StrUtil;
import org.tio.utils.thread.pool.DefaultThreadFactory;
......@@ -47,7 +48,6 @@ public final class MqttClientCreator {
* 默认的心跳超时
*/
public static final int DEFAULT_KEEP_ALIVE_SECS = 60;
/**
* 名称
*/
......@@ -168,6 +168,10 @@ public final class MqttClientCreator {
* scheduledExecutor
*/
private ScheduledThreadPoolExecutor scheduledExecutor;
/**
* TioConfig 自定义配置
*/
private Consumer<TioConfig> tioConfigCustomize;
public String getName() {
return name;
......@@ -440,6 +444,11 @@ public final class MqttClientCreator {
return this;
}
public MqttClientCreator tioConfigCustomize(Consumer<TioConfig> tioConfigCustomize) {
this.tioConfigCustomize = tioConfigCustomize;
return this;
}
public MqttClient connect() {
// 1. clientId 为空,生成默认的 clientId
if (StrUtil.isBlank(this.clientId)) {
......@@ -486,7 +495,11 @@ public final class MqttClientCreator {
tioConfig.setSslConfig(this.sslConfig);
// 10. 是否开启监控
tioConfig.statOn = this.statEnable;
// 11. tioClient
// 11. 自定义处理
if (this.tioConfigCustomize != null) {
this.tioConfigCustomize.accept(tioConfig);
}
// 12. tioClient
try {
TioClient tioClient = new TioClient(tioConfig);
tioClient.asynConnect(new Node(this.ip, this.port), this.timeout);
......
......@@ -38,6 +38,7 @@ import net.dreamlu.iot.mqtt.core.server.support.DefaultMqttServerProcessor;
import net.dreamlu.iot.mqtt.core.server.support.DefaultMqttServerUniqueIdServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tio.core.TioConfig;
import org.tio.core.ssl.SslConfig;
import org.tio.core.stat.IpStatListener;
import org.tio.server.ServerTioConfig;
......@@ -51,6 +52,7 @@ import org.tio.utils.thread.pool.DefaultThreadFactory;
import java.io.InputStream;
import java.lang.management.ManagementFactory;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.function.Consumer;
/**
* mqtt 服务端参数构造
......@@ -182,6 +184,10 @@ public class MqttServerCreator {
* 是否开启监控,默认:false 不开启,节省内存
*/
private boolean statEnable = false;
/**
* TioConfig 自定义配置
*/
private Consumer<TioConfig> tioConfigCustomize;
public String getName() {
return name;
......@@ -475,6 +481,11 @@ public class MqttServerCreator {
return this;
}
public MqttServerCreator tioConfigCustomize(Consumer<TioConfig> tioConfigCustomize) {
this.tioConfigCustomize = tioConfigCustomize;
return this;
}
public MqttServer build() {
// 默认的节点名称,用于集群
if (StrUtil.isBlank(this.nodeName)) {
......@@ -525,6 +536,10 @@ public class MqttServerCreator {
if (this.debug) {
tioConfig.debug = true;
}
// 自定义处理
if (this.tioConfigCustomize != null) {
this.tioConfigCustomize.accept(tioConfig);
}
TioServer tioServer = new TioServer(tioConfig);
// 7. 不校验版本号,社区版设置无效
tioServer.setCheckLastVersion(false);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册