Explorar o código

feat(网络组件): 增加模版配置,可通过jetlinks.network....设置网络组件的默认配置选项.

zhouhao %!s(int64=2) %!d(string=hai) anos
pai
achega
981351aaeb

+ 10 - 2
jetlinks-components/network-component/http-component/src/main/java/org/jetlinks/community/network/http/server/vertx/DefaultHttpServerProvider.java

@@ -4,6 +4,8 @@ import io.vertx.core.Vertx;
 import io.vertx.core.http.HttpServer;
 import io.vertx.core.http.HttpServer;
 import io.vertx.core.http.HttpServerOptions;
 import io.vertx.core.http.HttpServerOptions;
 import lombok.Generated;
 import lombok.Generated;
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.i18n.LocaleUtils;
 import org.hswebframework.web.i18n.LocaleUtils;
@@ -16,6 +18,7 @@ import org.jetlinks.core.metadata.types.ObjectType;
 import org.jetlinks.core.metadata.types.StringType;
 import org.jetlinks.core.metadata.types.StringType;
 import org.jetlinks.community.network.security.CertificateManager;
 import org.jetlinks.community.network.security.CertificateManager;
 import org.jetlinks.community.network.security.VertxKeyCertTrustOptions;
 import org.jetlinks.community.network.security.VertxKeyCertTrustOptions;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import reactor.core.publisher.Mono;
 import reactor.core.publisher.Mono;
 
 
@@ -33,15 +36,21 @@ import java.util.List;
  */
  */
 @Component
 @Component
 @Slf4j
 @Slf4j
+@ConfigurationProperties(prefix = "jetlinks.network.http-server")
 public class DefaultHttpServerProvider implements NetworkProvider<HttpServerConfig> {
 public class DefaultHttpServerProvider implements NetworkProvider<HttpServerConfig> {
 
 
     private final CertificateManager certificateManager;
     private final CertificateManager certificateManager;
 
 
     private final Vertx vertx;
     private final Vertx vertx;
 
 
+    @Getter
+    @Setter
+    private HttpServerOptions template = new HttpServerOptions();
+
     public DefaultHttpServerProvider(CertificateManager certificateManager, Vertx vertx) {
     public DefaultHttpServerProvider(CertificateManager certificateManager, Vertx vertx) {
         this.certificateManager = certificateManager;
         this.certificateManager = certificateManager;
         this.vertx = vertx;
         this.vertx = vertx;
+        template.setHandle100ContinueAutomatically(true);
     }
     }
 
 
     @Nonnull
     @Nonnull
@@ -125,8 +134,7 @@ public class DefaultHttpServerProvider implements NetworkProvider<HttpServerConf
 
 
 
 
     private Mono<HttpServerOptions> convert(HttpServerConfig config) {
     private Mono<HttpServerOptions> convert(HttpServerConfig config) {
-        HttpServerOptions options = new HttpServerOptions();
-        options.setHandle100ContinueAutomatically(true);
+        HttpServerOptions options = new HttpServerOptions(template);
         options.setHost(config.getHost());
         options.setHost(config.getHost());
         options.setPort(config.getPort());
         options.setPort(config.getPort());
         if (config.isSecure()) {
         if (config.isSecure()) {

+ 14 - 5
jetlinks-components/network-component/mqtt-component/src/main/java/org/jetlinks/community/network/mqtt/client/MqttClientProvider.java

@@ -3,6 +3,8 @@ package org.jetlinks.community.network.mqtt.client;
 import io.vertx.core.Vertx;
 import io.vertx.core.Vertx;
 import io.vertx.mqtt.MqttClient;
 import io.vertx.mqtt.MqttClient;
 import io.vertx.mqtt.MqttClientOptions;
 import io.vertx.mqtt.MqttClientOptions;
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.i18n.LocaleUtils;
 import org.hswebframework.web.i18n.LocaleUtils;
@@ -14,6 +16,7 @@ import org.jetlinks.core.metadata.types.IntType;
 import org.jetlinks.core.metadata.types.StringType;
 import org.jetlinks.core.metadata.types.StringType;
 import org.jetlinks.community.network.security.CertificateManager;
 import org.jetlinks.community.network.security.CertificateManager;
 import org.jetlinks.community.network.security.VertxKeyCertTrustOptions;
 import org.jetlinks.community.network.security.VertxKeyCertTrustOptions;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.core.env.Environment;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import reactor.core.publisher.Mono;
 import reactor.core.publisher.Mono;
@@ -29,6 +32,7 @@ import javax.annotation.Nullable;
  */
  */
 @Component
 @Component
 @Slf4j
 @Slf4j
+@ConfigurationProperties(prefix = "jetlinks.network.mqtt-client")
 public class MqttClientProvider implements NetworkProvider<MqttClientProperties> {
 public class MqttClientProvider implements NetworkProvider<MqttClientProperties> {
 
 
     private final Vertx vertx;
     private final Vertx vertx;
@@ -37,12 +41,21 @@ public class MqttClientProvider implements NetworkProvider<MqttClientProperties>
 
 
     private final Environment environment;
     private final Environment environment;
 
 
+    @Getter
+    @Setter
+    private MqttClientOptions template = new MqttClientOptions();
+
+
     public MqttClientProvider(CertificateManager certificateManager,
     public MqttClientProvider(CertificateManager certificateManager,
                               Vertx vertx,
                               Vertx vertx,
                               Environment environment) {
                               Environment environment) {
         this.vertx = vertx;
         this.vertx = vertx;
         this.certificateManager = certificateManager;
         this.certificateManager = certificateManager;
         this.environment = environment;
         this.environment = environment;
+        template.setTcpKeepAlive(true);
+//        options.setReconnectAttempts(10);
+        template.setAutoKeepAlive(true);
+        template.setKeepAliveInterval(180);
     }
     }
 
 
     @Nonnull
     @Nonnull
@@ -119,11 +132,7 @@ public class MqttClientProvider implements NetworkProvider<MqttClientProperties>
 
 
 
 
     private Mono<MqttClientOptions> convert(MqttClientProperties config) {
     private Mono<MqttClientOptions> convert(MqttClientProperties config) {
-        MqttClientOptions options = FastBeanCopier.copy(config, MqttClientOptions.class);
-        options.setTcpKeepAlive(true);
-//        options.setReconnectAttempts(10);
-        options.setAutoKeepAlive(true);
-        options.setKeepAliveInterval(180);
+        MqttClientOptions options = FastBeanCopier.copy(config, new MqttClientOptions(template));
 
 
         String clientId = String.valueOf(config.getClientId());
         String clientId = String.valueOf(config.getClientId());
 
 

+ 10 - 2
jetlinks-components/network-component/mqtt-component/src/main/java/org/jetlinks/community/network/mqtt/server/vertx/DefaultVertxMqttServerProvider.java

@@ -3,6 +3,8 @@ package org.jetlinks.community.network.mqtt.server.vertx;
 import io.vertx.core.Vertx;
 import io.vertx.core.Vertx;
 import io.vertx.mqtt.MqttServer;
 import io.vertx.mqtt.MqttServer;
 import io.vertx.mqtt.MqttServerOptions;
 import io.vertx.mqtt.MqttServerOptions;
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.i18n.LocaleUtils;
 import org.hswebframework.web.i18n.LocaleUtils;
@@ -14,6 +16,7 @@ import org.jetlinks.core.metadata.types.IntType;
 import org.jetlinks.core.metadata.types.StringType;
 import org.jetlinks.core.metadata.types.StringType;
 import org.jetlinks.community.network.security.CertificateManager;
 import org.jetlinks.community.network.security.CertificateManager;
 import org.jetlinks.community.network.security.VertxKeyCertTrustOptions;
 import org.jetlinks.community.network.security.VertxKeyCertTrustOptions;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import reactor.core.publisher.Mono;
 import reactor.core.publisher.Mono;
 
 
@@ -25,14 +28,20 @@ import java.util.List;
 
 
 @Slf4j
 @Slf4j
 @Component
 @Component
+@ConfigurationProperties(prefix = "jetlinks.network.mqtt-server")
 public class DefaultVertxMqttServerProvider implements NetworkProvider<VertxMqttServerProperties> {
 public class DefaultVertxMqttServerProvider implements NetworkProvider<VertxMqttServerProperties> {
 
 
     private final CertificateManager certificateManager;
     private final CertificateManager certificateManager;
     private final Vertx vertx;
     private final Vertx vertx;
 
 
+    @Getter
+    @Setter
+    private MqttServerOptions template = new MqttServerOptions();
+
     public DefaultVertxMqttServerProvider(CertificateManager certificateManager, Vertx vertx) {
     public DefaultVertxMqttServerProvider(CertificateManager certificateManager, Vertx vertx) {
         this.certificateManager = certificateManager;
         this.certificateManager = certificateManager;
         this.vertx = vertx;
         this.vertx = vertx;
+        template.setTcpKeepAlive(true);
     }
     }
 
 
     @Nonnull
     @Nonnull
@@ -115,11 +124,10 @@ public class DefaultVertxMqttServerProvider implements NetworkProvider<VertxMqtt
 
 
     private Mono<MqttServerOptions> convert(VertxMqttServerProperties properties) {
     private Mono<MqttServerOptions> convert(VertxMqttServerProperties properties) {
         //MqttServerOptions options = FastBeanCopier.copy(properties, new MqttServerOptions());
         //MqttServerOptions options = FastBeanCopier.copy(properties, new MqttServerOptions());
-        MqttServerOptions options = new MqttServerOptions();
+        MqttServerOptions options = new MqttServerOptions(template);
         options.setPort(properties.getPort());
         options.setPort(properties.getPort());
         options.setHost(properties.getHost());
         options.setHost(properties.getHost());
         options.setMaxMessageSize(properties.getMaxMessageSize());
         options.setMaxMessageSize(properties.getMaxMessageSize());
-        options.setTcpKeepAlive(true);
         if (properties.isSecure()) {
         if (properties.isSecure()) {
             options.setSsl(true);
             options.setSsl(true);
             return certificateManager
             return certificateManager

+ 12 - 3
jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/server/DefaultTcpServerProvider.java

@@ -3,6 +3,8 @@ package org.jetlinks.community.network.tcp.server;
 import io.vertx.core.Vertx;
 import io.vertx.core.Vertx;
 import io.vertx.core.net.NetServer;
 import io.vertx.core.net.NetServer;
 import io.vertx.core.net.NetServerOptions;
 import io.vertx.core.net.NetServerOptions;
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.i18n.LocaleUtils;
 import org.hswebframework.web.i18n.LocaleUtils;
@@ -17,6 +19,7 @@ import org.jetlinks.community.network.security.CertificateManager;
 import org.jetlinks.community.network.security.VertxKeyCertTrustOptions;
 import org.jetlinks.community.network.security.VertxKeyCertTrustOptions;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
 import org.jetlinks.community.network.tcp.parser.PayloadParserBuilder;
 import org.jetlinks.community.network.tcp.parser.PayloadParserBuilder;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import reactor.core.publisher.Mono;
 import reactor.core.publisher.Mono;
 
 
@@ -33,6 +36,7 @@ import java.util.function.Supplier;
  */
  */
 @Slf4j
 @Slf4j
 @Component
 @Component
+@ConfigurationProperties(prefix = "jetlinks.network.tcp-server")
 public class DefaultTcpServerProvider implements NetworkProvider<TcpServerProperties> {
 public class DefaultTcpServerProvider implements NetworkProvider<TcpServerProperties> {
 
 
     private final CertificateManager certificateManager;
     private final CertificateManager certificateManager;
@@ -41,10 +45,16 @@ public class DefaultTcpServerProvider implements NetworkProvider<TcpServerProper
 
 
     private final PayloadParserBuilder payloadParserBuilder;
     private final PayloadParserBuilder payloadParserBuilder;
 
 
+    @Getter
+    @Setter
+    private NetServerOptions template = new NetServerOptions();
+
+
     public DefaultTcpServerProvider(CertificateManager certificateManager, Vertx vertx, PayloadParserBuilder payloadParserBuilder) {
     public DefaultTcpServerProvider(CertificateManager certificateManager, Vertx vertx, PayloadParserBuilder payloadParserBuilder) {
         this.certificateManager = certificateManager;
         this.certificateManager = certificateManager;
         this.vertx = vertx;
         this.vertx = vertx;
         this.payloadParserBuilder = payloadParserBuilder;
         this.payloadParserBuilder = payloadParserBuilder;
+        template.setTcpKeepAlive(true);
     }
     }
 
 
     @Nonnull
     @Nonnull
@@ -129,10 +139,9 @@ public class DefaultTcpServerProvider implements NetworkProvider<TcpServerProper
     }
     }
 
 
     private Mono<NetServerOptions> convert(TcpServerProperties properties) {
     private Mono<NetServerOptions> convert(TcpServerProperties properties) {
-        NetServerOptions options = new NetServerOptions();
+        NetServerOptions options = new NetServerOptions(template);
         options.setPort(properties.getPort());
         options.setPort(properties.getPort());
-        options.setTcpKeepAlive(true);
-
+        options.setHost(properties.getHost());
         if (properties.isSecure()) {
         if (properties.isSecure()) {
             options.setSsl(true);
             options.setSsl(true);
             return certificateManager
             return certificateManager