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();