You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2020/06/01 15:42:45 UTC
[incubator-iotdb] 01/01: add max mqtt message size config
This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch fix_mqtt_max_length
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 6e6b19655718a3decd9263ca676e562a42259911
Author: qiaojialin <64...@qq.com>
AuthorDate: Mon Jun 1 23:42:10 2020 +0800
add max mqtt message size config
---
docs/UserGuide/Client/Programming - MQTT.md | 1 +
docs/zh/UserGuide/Client/Programming - MQTT.md | 2 +-
server/src/assembly/resources/conf/iotdb-engine.properties | 2 ++
.../main/java/org/apache/iotdb/db/conf/IoTDBConfig.java | 14 ++++++++++++++
.../main/java/org/apache/iotdb/db/conf/IoTDBConstant.java | 1 +
.../java/org/apache/iotdb/db/conf/IoTDBDescriptor.java | 4 ++++
.../main/java/org/apache/iotdb/db/service/MQTTService.java | 4 ++++
7 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/docs/UserGuide/Client/Programming - MQTT.md b/docs/UserGuide/Client/Programming - MQTT.md
index bd06024..17f1d15 100644
--- a/docs/UserGuide/Client/Programming - MQTT.md
+++ b/docs/UserGuide/Client/Programming - MQTT.md
@@ -69,6 +69,7 @@ Configurations are as following:
| mqtt_port | the mqtt service binding port | 1883 |
| mqtt_handler_pool_size | the handler pool size for handing the mqtt messages | 1 |
| mqtt_payload_formatter | the mqtt message payload formatter | json |
+| max_mqtt_message_size | the max mqtt message size in byte| 1048576 |
## Examples
diff --git a/docs/zh/UserGuide/Client/Programming - MQTT.md b/docs/zh/UserGuide/Client/Programming - MQTT.md
index 547036b..4197666 100644
--- a/docs/zh/UserGuide/Client/Programming - MQTT.md
+++ b/docs/zh/UserGuide/Client/Programming - MQTT.md
@@ -70,7 +70,7 @@ MQTT主题与IoTDB时间序列相对应。
| mqtt_port | mqtt服务绑定端口 | 1883 |
| mqtt_handler_pool_size | 处理mqtt消息的处理程序池大小 | 1 |
| mqtt_payload_formatter | mqtt消息有效负载格式化程序 | json |
-
+| max_mqtt_message_size | mqtt消息最大长度(字节)| 1048576 |
## 例子
以下是mqtt客户端将消息发送到IoTDB服务器的示例。
diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties b/server/src/assembly/resources/conf/iotdb-engine.properties
index 61f1ae6..17e6647 100644
--- a/server/src/assembly/resources/conf/iotdb-engine.properties
+++ b/server/src/assembly/resources/conf/iotdb-engine.properties
@@ -471,6 +471,8 @@ mqtt_handler_pool_size=1
# the mqtt message payload formatter.
mqtt_payload_formatter=json
+# max length of mqtt message
+max_mqtt_message_size=1048576
####################
### Authorization Configuration
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 1c29d56..b3e066b 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -93,6 +93,12 @@ public class IoTDBConfig {
private String mqttPayloadFormatter = "json";
/**
+ * max mqtt message size
+ */
+ private int maxMqttMessageSize = 1048576;
+
+
+ /**
* Rpc binding address.
*/
private String rpcAddress = "0.0.0.0";
@@ -1554,6 +1560,14 @@ public class IoTDBConfig {
this.mqttPayloadFormatter = mqttPayloadFormatter;
}
+ public int getMaxMqttMessageSize() {
+ return maxMqttMessageSize;
+ }
+
+ public void setMaxMqttMessageSize(int maxMqttMessageSize) {
+ this.maxMqttMessageSize = maxMqttMessageSize;
+ }
+
public int getTagAttributeTotalSize() {
return tagAttributeTotalSize;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
index 166f38c..e0a287e 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
@@ -93,4 +93,5 @@ public class IoTDBConstant {
public static final String MQTT_PORT_NAME = "mqtt_port";
public static final String MQTT_HANDLER_POOL_SIZE_NAME = "mqtt_handler_pool_size";
public static final String MQTT_PAYLOAD_FORMATTER_NAME = "mqtt_payload_formatter";
+ public static final String MAX_MQTT_MESSAGE_SIZE = "max_mqtt_message_size";
}
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 790487d..4deb22e 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -411,6 +411,10 @@ public class IoTDBDescriptor {
conf.setEnableMQTTService(
Boolean.parseBoolean(properties.getProperty(IoTDBConstant.ENABLE_MQTT)));
}
+ if (properties.getProperty(IoTDBConstant.MAX_MQTT_MESSAGE_SIZE) != null) {
+ conf.setMaxMqttMessageSize(
+ Integer.parseInt(properties.getProperty(IoTDBConstant.MAX_MQTT_MESSAGE_SIZE)));
+ }
conf.setAuthorizerProvider(properties.getProperty("authorizer_provider_class",
"org.apache.iotdb.db.auth.authorizer.LocalFileAuthorizer"));
diff --git a/server/src/main/java/org/apache/iotdb/db/service/MQTTService.java b/server/src/main/java/org/apache/iotdb/db/service/MQTTService.java
index a024cef..1ee783f 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/MQTTService.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/MQTTService.java
@@ -56,6 +56,10 @@ public class MQTTService implements IService {
public void startup() {
IoTDBConfig iotDBConfig = IoTDBDescriptor.getInstance().getConfig();
IConfig config = createBrokerConfig(iotDBConfig);
+
+ config.setProperty(BrokerConstants.NETTY_MAX_BYTES_PROPERTY_NAME,
+ String.valueOf(IoTDBDescriptor.getInstance().getConfig().getMaxMqttMessageSize()));
+
List<InterceptHandler> handlers = Lists.newArrayList(new PublishHandler(iotDBConfig));
IAuthenticator authenticator = new BrokerAuthenticator();