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

mica-mqtt server、client 添加 statEnable 配置,默认关闭。

上级 8dc973cf
# 变更记录
## 发行版本
### v1.2.8 - 2022-02-20
- :sparkles: mica-mqtt server 优化连接 connect 日志。
- :sparkles: mica-mqtt server 代码优化。
- :sparkles: mica-mqtt server 添加 statEnable 配置,默认关闭,开启 Prometheus 监控,需要设置为 true。
- :sparkles: mica-mqtt client 添加 statEnable 配置,默认关闭。
### v1.2.7 - 2022-02-13
- :sparkles: mica-mqtt-spring-boot-starter 完善。
- :sparkles: mica-mqtt client 考虑一开始就没有连接上服务端的情况。
......
......@@ -145,6 +145,10 @@ public final class MqttClientCreator {
* messageId 生成器
*/
private IMqttClientMessageIdGenerator messageIdGenerator;
/**
* 是否开启监控,默认:false 不开启,节省内存
*/
private boolean statEnable = false;
public String getName() {
return name;
......@@ -246,6 +250,10 @@ public final class MqttClientCreator {
return messageIdGenerator;
}
public boolean isStatEnable() {
return statEnable;
}
public MqttClientCreator name(String name) {
this.name = name;
return this;
......@@ -377,6 +385,15 @@ public final class MqttClientCreator {
return this;
}
public MqttClientCreator statEnable() {
return statEnable(true);
}
public MqttClientCreator statEnable(boolean enable) {
this.statEnable = enable;
return this;
}
public MqttClient connect() {
// 1. 生成 默认的 clientId
String clientId = getClientId();
......@@ -411,7 +428,9 @@ public final class MqttClientCreator {
tioConfig.setReadBufferSize(this.readBufferSize);
// 9. ssl 证书设置
tioConfig.setSslConfig(this.sslConfig);
// 10. tioClient
// 10. 是否开启监控
tioConfig.statOn = this.statEnable;
// 11. tioClient
try {
TioClient tioClient = new TioClient(tioConfig);
tioClient.asynConnect(new Node(this.ip, this.port), this.timeout);
......
......@@ -169,6 +169,10 @@ public class MqttServerCreator {
* 是否用队列解码(系统初始化时确定该值,中途不要变更此值,否则在切换的时候可能导致消息丢失)
*/
private boolean useQueueDecode = false;
/**
* 是否开启监控,默认:false 不开启,节省内存
*/
private boolean statEnable = false;
public String getName() {
return name;
......@@ -437,6 +441,19 @@ public class MqttServerCreator {
return this;
}
public boolean isStatEnable() {
return statEnable;
}
public MqttServerCreator statEnable() {
return statEnable(true);
}
public MqttServerCreator statEnable(boolean enable) {
this.statEnable = enable;
return this;
}
public MqttServer build() {
Objects.requireNonNull(this.messageListener, "Mqtt Server message listener cannot be null.");
// 默认的节点名称,用于集群
......@@ -473,7 +490,9 @@ public class MqttServerCreator {
tioConfig.setUseQueueSend(this.useQueueSend);
// 4. mqtt 消息最大长度
tioConfig.setReadBufferSize(this.readBufferSize);
// 5. 设置 t-io 心跳 timeout
// 5. 是否开启监控
tioConfig.statOn = this.statEnable;
// 6. 设置 t-io 心跳 timeout
if (this.heartbeatTimeout != null) {
tioConfig.setHeartbeatTimeout(this.heartbeatTimeout);
}
......@@ -487,9 +506,9 @@ public class MqttServerCreator {
tioConfig.debug = true;
}
TioServer tioServer = new TioServer(tioConfig);
// 6. 不校验版本号,社区版设置无效
// 7. 不校验版本号,社区版设置无效
tioServer.setCheckLastVersion(false);
// 7. 配置 mqtt http/websocket server
// 9 配置 mqtt http/websocket server
MqttWebServer webServer;
logger.info("Mica mqtt http api enable:{} websocket enable:{}", this.httpEnable, this.websocketEnable);
if (this.httpEnable || this.websocketEnable) {
......@@ -499,7 +518,7 @@ public class MqttServerCreator {
}
// MqttServer
MqttServer mqttServer = new MqttServer(tioServer, webServer, this, executor);
// 8. 如果是默认的消息转发器,设置 mqttServer
// 9. 如果是默认的消息转发器,设置 mqttServer
if (this.messageDispatcher instanceof AbstractMqttMessageDispatcher) {
((AbstractMqttMessageDispatcher) this.messageDispatcher).config(mqttServer);
}
......
......@@ -14,25 +14,26 @@
### 2.1 配置项
| 配置项 | 默认值 | 说明 |
| ----- | ------ | ------ |
| mqtt.server.enabled | true | 是否启用,默认:true |
| mqtt.server.name | Mica-Mqtt-Server | 名称 |
| mqtt.server.port | 1883 | 端口 |
| mqtt.server.ip | 0.0.0.0 | 服务端 ip 默认为空,0.0.0.0,建议不要设置 |
| mqtt.server.buffer-allocator | 堆内存 | 堆内存和堆外内存 |
| mqtt.server.heartbeat-timeout | 1000 * 120 | 心跳超时时间(单位: 毫秒 默认: 1000 * 120) |
| mqtt.server.read-buffer-size | 8092 | 一次读取接收数据的 buffer size,超过这个长度的消息会多次读取,默认:8092 |
| mqtt.server.max-bytes-in-message | 8092 | 消息解析最大 bytes 长度,默认:8092 |
| mqtt.server.max-client-id-length | 23 | mqtt 3.1 会校验此参数,其它协议版本不会 |
| mqtt.server.debug | false | debug,如果开启 prometheus 指标收集建议关闭 |
| mqtt.server.web-port | 8083 | http、websocket 端口,默认:8083 |
| mqtt.server.websocket-enable | true | 开启 websocket 服务,默认:true |
| mqtt.server.http-enable | false | 开启 http 服务,默认:true |
| mqtt.server.http-basic-auth.enable | false | 是否启用,默认:关闭 |
| mqtt.server.http-basic-auth.password | | http Basic 认证密码 |
| mqtt.server.http-basic-auth.username | | http Basic 认证账号 |
| mqtt.server.node-name | pid@ip:port | 集群节点名 |
| 配置项 | 默认值 | 说明 |
| ----- |-----------|----------------------------------------------|
| mqtt.server.enabled | true | 是否启用,默认:true |
| mqtt.server.name | Mica-Mqtt-Server | 名称 |
| mqtt.server.port | 1883 | 端口 |
| mqtt.server.ip | 0.0.0.0 | 服务端 ip 默认为空,0.0.0.0,建议不要设置 |
| mqtt.server.buffer-allocator | 堆内存 | 堆内存和堆外内存 |
| mqtt.server.heartbeat-timeout | 1000 * 120 | 心跳超时时间(单位: 毫秒 默认: 1000 * 120) |
| mqtt.server.read-buffer-size | 8092 | 一次读取接收数据的 buffer size,超过这个长度的消息会多次读取,默认:8092 |
| mqtt.server.max-bytes-in-message | 8092 | 消息解析最大 bytes 长度,默认:8092 |
| mqtt.server.max-client-id-length | 23 | mqtt 3.1 会校验此参数,其它协议版本不会 |
| mqtt.server.debug | false | debug,如果开启 prometheus 指标收集建议关闭 |
| mqtt.server.web-port | 8083 | http、websocket 端口,默认:8083 |
| mqtt.server.websocket-enable | true | 开启 websocket 服务,默认:true |
| mqtt.server.http-enable | false | 开启 http 服务,默认:true |
| mqtt.server.http-basic-auth.enable | false | 是否启用,默认:关闭 |
| mqtt.server.http-basic-auth.password | | http Basic 认证密码 |
| mqtt.server.http-basic-auth.username | | http Basic 认证账号 |
| mqtt.server.node-name | pid@ip:port | 集群节点名 |
| mqtt.server.stat-enable | false | 是否开启监控,默认:关闭,注意如果开启 Prometheus 监控,需要设置为 true |
### 2.2 配置项示例
......@@ -183,10 +184,11 @@ public class ServerService {
| mqtt.client.max-client-id-length | 23 | mqtt 3.1 会校验此参数,其它协议版本不会 |
| mqtt.client.reconnect | true | 自动重连 |
| mqtt.client.re-interval | 5000 | 重连重试时间,单位毫秒 |
| mqtt.client.retry-count | 0 | 连续重连次数,当连续重连这么多次都失败时,不再重连。0和负数则一直重连 |
| mqtt.client.retry-count | 0 | 连续重连次数,当连续重连这么多次都失败时,不再重连。0和负数则一直重连 |
| mqtt.client.timeout | 5 | 连接超时时间,单位秒,t-io 配置,可为 null |
| mqtt.client.keep-alive-secs | 60 | Keep Alive (s) 心跳维持时间 |
| mqtt.client.version | MQTT_3_1_1 | mqtt 协议,默认:MQTT_3_1_1 |
| mqtt.client.stat-enable | false | 是否开启监控,默认:关闭 |
### 3.2 配置项示例
```yaml
......
......@@ -66,7 +66,8 @@ public class MqttClientConfiguration {
.reSubscribeBatchSize(properties.getReSubscribeBatchSize())
.version(properties.getVersion())
.cleanSession(properties.isCleanSession())
.bufferAllocator(properties.getBufferAllocator());
.bufferAllocator(properties.getBufferAllocator())
.statEnable(properties.isStatEnable());
Integer timeout = properties.getTimeout();
if (timeout != null && timeout > 0) {
clientCreator.timeout(timeout);
......
......@@ -122,6 +122,10 @@ public class MqttClientProperties {
* 遗嘱消息
*/
private WillMessage willMessage;
/**
* 是否开启监控,默认:false 不开启,节省内存
*/
private boolean statEnable = false;
@Getter
@Setter
......
......@@ -77,7 +77,8 @@ public class MqttServerConfiguration {
.webPort(properties.getWebPort())
.websocketEnable(properties.isWebsocketEnable())
.httpEnable(properties.isHttpEnable())
.nodeName(properties.getNodeName());
.nodeName(properties.getNodeName())
.statEnable(properties.isStatEnable());
if (properties.isDebug()) {
serverCreator.debug();
}
......
......@@ -100,6 +100,10 @@ public class MqttServerProperties {
* 节点名称,用于处理集群
*/
private String nodeName;
/**
* 是否开启监控,默认:false 不开启,节省内存
*/
private boolean statEnable = false;
@Getter
@Setter
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册