Ver Fonte

剥离 common 和 dagent 模块对 spring 的依赖, 只有 dmaster 模块依赖 spring

外面下雨了,还很大。眼看周五还是太阳,嗨。
reghao há 4 anos atrás
pai
commit
68d42a2b4d
23 ficheiros alterados com 256 adições e 209 exclusões
  1. 12 0
      common/pom.xml
  2. 0 30
      common/src/main/java/cn/reghao/autodop/common/beans/BeansConfig.java
  3. 0 2
      common/src/main/java/cn/reghao/autodop/common/machine/Machine.java
  4. 2 4
      common/src/main/java/cn/reghao/autodop/common/mqtt/AsyncMqttClient.java
  5. 2 5
      common/src/main/java/cn/reghao/autodop/common/mqtt/DefaultMqttClient.java
  6. 15 0
      common/src/main/java/cn/reghao/autodop/common/mqtt/MqttProperties.java
  7. 22 48
      dagent/pom.xml
  8. 101 0
      dagent/src/main/java/cn/reghao/autodop/dagent/DagentApp.java
  9. 0 13
      dagent/src/main/java/cn/reghao/autodop/dagent/DagentApplication.java
  10. 0 2
      dagent/src/main/java/cn/reghao/autodop/dagent/app/DockerAppServiceImpl.java
  11. 0 2
      dagent/src/main/java/cn/reghao/autodop/dagent/mqttsub/DagentTopicListener.java
  12. 0 2
      dagent/src/main/java/cn/reghao/autodop/dagent/mqttsub/impl/AppRpcClazzDispatcher.java
  13. 0 2
      dagent/src/main/java/cn/reghao/autodop/dagent/mqttsub/impl/AppRpcClazzImpl.java
  14. 1 16
      dagent/src/main/java/cn/reghao/autodop/dagent/spring/DagentLifecycle.java
  15. 0 10
      dagent/src/main/resources/application-dev.yml
  16. 0 5
      dagent/src/main/resources/application-prod.yml
  17. 0 5
      dagent/src/main/resources/application-test.yml
  18. 0 8
      dagent/src/main/resources/application.yml
  19. 6 0
      dagent/src/main/resources/mqtt.json
  20. 47 28
      dmaster/pom.xml
  21. 45 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/spring/BeansConfig.java
  22. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/spring/MosquittoProperties.java
  23. 2 26
      pom.xml

+ 12 - 0
common/pom.xml

@@ -65,5 +65,17 @@
             <artifactId>oshi-core</artifactId>
             <version>5.8.2</version>
         </dependency>
+
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-core</artifactId>
+            <version>1.2.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>1.2.3</version>
+        </dependency>
     </dependencies>
 </project>

+ 0 - 30
common/src/main/java/cn/reghao/autodop/common/beans/BeansConfig.java

@@ -1,30 +0,0 @@
-package cn.reghao.autodop.common.beans;
-
-import cn.reghao.jdkutil.converter.ByteConverter;
-import cn.reghao.jdkutil.http.WebClient;
-import cn.reghao.jdkutil.http.WebRequest;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import oshi.SystemInfo;
-
-/**
- * @author reghao
- * @date 2021-09-16 09:28:04
- */
-@Configuration
-public class BeansConfig {
-    @Bean
-    public SystemInfo systemInfo() {
-        return new SystemInfo();
-    }
-
-    @Bean
-    public WebRequest webRequest() {
-        return new WebClient();
-    }
-
-    @Bean
-    public ByteConverter byteConverter() {
-        return new ByteConverter();
-    }
-}

+ 0 - 2
common/src/main/java/cn/reghao/autodop/common/machine/Machine.java

@@ -6,7 +6,6 @@ import cn.reghao.jdkutil.machine.data.detail.*;
 import cn.reghao.jdkutil.machine.id.MachineId;
 import cn.reghao.jdkutil.machine.id.MachineIdLinux;
 import cn.reghao.jdkutil.machine.data.stat.MachineStat;
-import org.springframework.stereotype.Service;
 import oshi.SystemInfo;
 
 import java.util.List;
@@ -16,7 +15,6 @@ import java.util.stream.Collectors;
  * @author reghao
  * @date 2020-10-22 15:47:58
  */
-@Service
 public class Machine {
     public final static String ID;
     public final static String IPV4;

+ 2 - 4
common/src/main/java/cn/reghao/autodop/common/mqtt/AsyncMqttClient.java

@@ -10,7 +10,6 @@ import cn.reghao.jdkutil.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.*;
 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
-import org.springframework.stereotype.Component;
 
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
@@ -21,13 +20,12 @@ import java.util.Map;
  * @date 2021-10-28 20:52:17
  */
 @Slf4j
-@Component
 public class AsyncMqttClient {
-    private final MosquittoProperties properties;
+    private final MqttProperties properties;
     private final MqttAsyncClient mqttClient;
     private final Map<String, IMqttMessageListener> msgListeners = new HashMap<>();
 
-    public AsyncMqttClient(MosquittoProperties properties) throws MqttException {
+    public AsyncMqttClient(MqttProperties properties) throws MqttException {
         this.properties = properties;
         String clientId = properties.getClientId() + Machine.ID;
         mqttClient = new MqttAsyncClient(properties.getBroker(), clientId, new MemoryPersistence());

+ 2 - 5
common/src/main/java/cn/reghao/autodop/common/mqtt/DefaultMqttClient.java

@@ -7,9 +7,7 @@ import cn.reghao.jdkutil.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.*;
 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
-import org.springframework.stereotype.Component;
 
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -18,16 +16,15 @@ import java.util.Map;
  * @date 2021-05-21 08:27:41
  */
 @Slf4j
-@Component
 public class DefaultMqttClient implements AutoCloseable {
-    private final MosquittoProperties properties;
+    private final MqttProperties properties;
     private final MqttClient client;
     // 记录 RPC 调用, size 为 0 时表示所有 pub 消息的结果都已 sub
     private final Map<String, RpcMsg> rpcRecorder = new HashMap<>();
     private final Map<String, IMqttMessageListener> subMap = new HashMap<>();
     private final MqttCallback connCallback = new ConnectionCallback();
 
-    public DefaultMqttClient(MosquittoProperties properties) throws MqttException, IOException {
+    public DefaultMqttClient(MqttProperties properties) throws MqttException {
         this.properties = properties;
         String clientId = properties.getClientId() + Machine.ID;
         this.client = new MqttClient(properties.getBroker(), clientId, new MemoryPersistence());

+ 15 - 0
common/src/main/java/cn/reghao/autodop/common/mqtt/MqttProperties.java

@@ -0,0 +1,15 @@
+package cn.reghao.autodop.common.mqtt;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2019-08-27 00:17:55
+ */
+@Data
+public class MqttProperties {
+    private String broker;
+    private String username;
+    private String password;
+    private String clientId;
+}

+ 22 - 48
dagent/pom.xml

@@ -23,61 +23,35 @@
         </dependency>
     </dependencies>
 
-    <profiles>
-        <profile>
-            <id>dev</id>
-            <properties>
-                <profile.active>dev</profile.active>
-            </properties>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-        </profile>
-        <profile>
-            <id>test</id>
-            <properties>
-                <profile.active>test</profile.active>
-            </properties>
-        </profile>
-        <profile>
-            <id>prod</id>
-            <properties>
-                <profile.active>prod</profile.active>
-            </properties>
-        </profile>
-    </profiles>
-
     <build>
         <finalName>${project.artifactId}</finalName>
-
-        <extensions>
-            <extension>
-                <groupId>kr.motd.maven</groupId>
-                <artifactId>os-maven-plugin</artifactId>
-                <version>1.5.0.Final</version>
-            </extension>
-        </extensions>
-
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-                <includes>
-                    <include>banner.txt</include>
-                    <include>application.yml</include>
-                    <include>application-${profile.active}.yml</include>
-                    <include>logback-spring.xml</include>
-                </includes>
-            </resource>
-        </resources>
-
         <plugins>
             <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>3.2.0</version>
                 <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>cn.reghao.autodop.dagent.DagentApp</mainClass>
+                        </manifest>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                    <!-- 不设置此属性则生成的 jar 包名字会带有 jar-with-dependencies -->
+                    <appendAssemblyId>false</appendAssemblyId>
                     <outputDirectory>${project.build.outputDir}</outputDirectory>
                 </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
             </plugin>
         </plugins>
     </build>

+ 101 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/DagentApp.java

@@ -0,0 +1,101 @@
+package cn.reghao.autodop.dagent;
+
+import cn.reghao.autodop.common.machine.Machine;
+import cn.reghao.autodop.common.mqtt.AsyncMqttClient;
+import cn.reghao.autodop.common.mqtt.MqttProperties;
+import cn.reghao.autodop.common.msg.MsgQueue;
+import cn.reghao.autodop.common.msg.pub.dto.node.constant.AppId;
+import cn.reghao.autodop.common.msg.rpc.clazz.IAppRpcClazz;
+import cn.reghao.autodop.dagent.machine.NodeEventClazzPubImpl;
+import cn.reghao.autodop.dagent.mqttsub.DagentConnActionListener;
+import cn.reghao.autodop.dagent.mqttsub.DagentTopicListener;
+import cn.reghao.autodop.dagent.mqttsub.impl.AppRpcClazzDispatcher;
+import cn.reghao.autodop.dagent.mqttsub.impl.AppRpcClazzImpl;
+import cn.reghao.jdkutil.http.WebClient;
+import com.sun.net.httpserver.HttpServer;
+import lombok.extern.slf4j.Slf4j;
+import org.eclipse.paho.client.mqttv3.MqttException;
+import oshi.SystemInfo;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+
+@Slf4j
+public class DagentApp {
+	static AsyncMqttClient mqttClient;
+	static DagentTopicListener dagentTopicListener;
+	static NodeEventClazzPubImpl nodeEventClazzPub;
+
+	static void startMqtt() throws MqttException {
+		mqttClient.add(MsgQueue.dagentTopic(Machine.ID), dagentTopicListener);
+		DagentConnActionListener connActionListener = new DagentConnActionListener(mqttClient, nodeEventClazzPub);
+		mqttClient.connect(connActionListener);
+	}
+
+	static void pubDagentShutdown() {
+		nodeEventClazzPub.nodeShutdown();
+		log.info("Dagent 停止");
+	}
+
+	/**
+	 * 优雅关闭爬虫(进程级别的关闭)
+	 *
+	 * @date 2019-08-16 下午3:45
+	 */
+	static void shutdownGracefully() {
+		Runtime.getRuntime().addShutdownHook(new Thread(new ShutdownHook(), "main-shutdown-hook"));
+	}
+
+	/**
+	 * 1.可以处理 kill -2 或 kill -15
+	 * 2.无法处理 kill -9 和机器断电的情况
+	 *
+	 * @date 2019-08-16 下午4:07
+	 */
+	static class ShutdownHook implements Runnable {
+		@Override
+		public void run() {
+			log.info("清理资源后关闭应用...");
+			stop();
+		}
+	}
+
+	/**
+	 * 1.停止从 UrlScheduler 中获取数据
+	 * 2.停止向 DataProducer 提交数据
+	 * 3.线程池停止接受新任务,并等待当前执行的任务完成
+	 *
+	 * @param
+	 * @return
+	 * @date 2021-04-02 下午11:26
+	 */
+	static void stop() {
+		log.info("资源清理完成,结束 DagentApp...");
+	}
+
+	public static void main(String[] args) throws MqttException, IOException {
+		shutdownGracefully();
+
+		MqttProperties mqttProperties = new MqttProperties();
+		mqttProperties.setBroker("tcp://localhost:1883");
+		mqttProperties.setClientId(AppId.dagent.name());
+		mqttProperties.setUsername("dev");
+		mqttProperties.setPassword("Dev@123456");
+
+		mqttClient = new AsyncMqttClient(mqttProperties);
+
+		IAppRpcClazz appRpcClazz = new AppRpcClazzImpl();
+		AppRpcClazzDispatcher appRpcClazzDispatcher = new AppRpcClazzDispatcher(appRpcClazz);
+		dagentTopicListener = new DagentTopicListener(mqttClient, appRpcClazzDispatcher);
+
+		Machine machine = new Machine(new WebClient(), new SystemInfo());
+		nodeEventClazzPub = new NodeEventClazzPubImpl(mqttClient, machine);
+
+		mqttClient.add(MsgQueue.dagentTopic(Machine.ID), dagentTopicListener);
+		DagentConnActionListener connActionListener = new DagentConnActionListener(mqttClient, nodeEventClazzPub);
+		mqttClient.connect(connActionListener);
+
+		HttpServer.create(new InetSocketAddress("127.0.0.1", 9790), 0).start();
+		//pubDagentShutdown();
+	}
+}

+ 0 - 13
dagent/src/main/java/cn/reghao/autodop/dagent/DagentApplication.java

@@ -1,13 +0,0 @@
-package cn.reghao.autodop.dagent;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.ComponentScan;
-
-@SpringBootApplication
-@ComponentScan({"cn.reghao.autodop.dagent", "cn.reghao.autodop.common"})
-public class DagentApplication {
-	public static void main(String[] args) {
-		SpringApplication.run(DagentApplication.class, args);
-	}
-}

+ 0 - 2
dagent/src/main/java/cn/reghao/autodop/dagent/app/DockerAppServiceImpl.java

@@ -13,13 +13,11 @@ import cn.reghao.autodop.common.util.ExceptionUtil;
 import cn.reghao.jdkutil.converter.DateTimeConverter;
 import cn.reghao.jdkutil.serializer.JsonConverter;
 import com.github.dockerjava.api.command.InspectContainerResponse;
-import org.springframework.stereotype.Service;
 
 /**
  * @author reghao
  * @date 2021-02-22 16:21:37
  */
-@Service
 public class DockerAppServiceImpl implements AppService {
     private final long sleep = 10_000;
     private final Docker docker = new DockerImpl();

+ 0 - 2
dagent/src/main/java/cn/reghao/autodop/dagent/mqttsub/DagentTopicListener.java

@@ -9,7 +9,6 @@ import cn.reghao.autodop.dagent.mqttsub.impl.AppRpcClazzDispatcher;
 import cn.reghao.jdkutil.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.*;
-import org.springframework.stereotype.Component;
 
 import java.lang.management.ManagementFactory;
 
@@ -20,7 +19,6 @@ import java.lang.management.ManagementFactory;
  * @date 2021-05-24 09:24:03
  */
 @Slf4j
-@Component
 public class DagentTopicListener implements IMqttMessageListener {
     private final long startTime;
     private final AsyncMqttClient mqttClient;

+ 0 - 2
dagent/src/main/java/cn/reghao/autodop/dagent/mqttsub/impl/AppRpcClazzDispatcher.java

@@ -7,14 +7,12 @@ import cn.reghao.autodop.common.msg.rpc.dto.app.*;
 import cn.reghao.autodop.common.msg.rpc.RpcMsg;
 import cn.reghao.jdkutil.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
 
 /**
  * @author reghao
  * @date 2020-12-30 10:26:47
  */
 @Slf4j
-@Component
 public class AppRpcClazzDispatcher implements ClazzDispatcher<RpcMsg, RpcMsg> {
     private final IAppRpcClazz appRpcClazz;
 

+ 0 - 2
dagent/src/main/java/cn/reghao/autodop/dagent/mqttsub/impl/AppRpcClazzImpl.java

@@ -12,14 +12,12 @@ import cn.reghao.jdkutil.result.Result;
 import cn.reghao.jdkutil.result.ResultStatus;
 import cn.reghao.jdkutil.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
 
 /**
  * @author reghao
  * @date 2020-12-30 10:26:47
  */
 @Slf4j
-@Component
 public class AppRpcClazzImpl implements IAppRpcClazz {
     private final AppService dockerAppServiceImpl;
     private final AppService zipAppServiceImpl;

+ 1 - 16
dagent/src/main/java/cn/reghao/autodop/dagent/spring/DagentLifecycle.java

@@ -8,10 +8,6 @@ import cn.reghao.autodop.dagent.mqttsub.DagentConnActionListener;
 import cn.reghao.autodop.dagent.mqttsub.DagentTopicListener;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.MqttException;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.context.annotation.Configuration;
 
 /**
  * TODO 无法处理 kill -9 和机器断电的情况
@@ -20,8 +16,7 @@ import org.springframework.context.annotation.Configuration;
  * @date 2021-04-01 11:36:51
  */
 @Slf4j
-@Configuration
-public class DagentLifecycle implements ApplicationRunner, DisposableBean {
+public class DagentLifecycle {
     private final AsyncMqttClient mqttClient;
     private final DagentTopicListener dagentTopicListener;
     private final NodeEventClazzPubImpl nodeEventClazzPub;
@@ -32,22 +27,12 @@ public class DagentLifecycle implements ApplicationRunner, DisposableBean {
         this.nodeEventClazzPub = new NodeEventClazzPubImpl(mqttClient, machine);
     }
 
-    @Override
-    public void run(ApplicationArguments args) throws Exception {
-        startMqtt();
-    }
-
     private void startMqtt() throws MqttException {
         mqttClient.add(MsgQueue.dagentTopic(Machine.ID), dagentTopicListener);
         DagentConnActionListener connActionListener = new DagentConnActionListener(mqttClient, nodeEventClazzPub);
         mqttClient.connect(connActionListener);
     }
 
-    @Override
-    public void destroy() {
-        pubDagentShutdown();
-    }
-
     private void pubDagentShutdown() {
         nodeEventClazzPub.nodeShutdown();
         log.info("Dagent 停止");

+ 0 - 10
dagent/src/main/resources/application-dev.yml

@@ -1,10 +0,0 @@
-mosquitto:
-  broker: tcp://localhost:1883
-  username: dev
-  password: Dev@123456
-  clientId: dagent
-#mosquitto:
-#  broker: tcp://s75.iquizoo.com:1883
-#  username: test
-#  password: Test@123456
-#  clientId: dagent

+ 0 - 5
dagent/src/main/resources/application-prod.yml

@@ -1,5 +0,0 @@
-mosquitto:
-  broker: tcp://localhost:1883
-  username: dev
-  password: Dev@123456
-  clientId: dagent

+ 0 - 5
dagent/src/main/resources/application-test.yml

@@ -1,5 +0,0 @@
-mosquitto:
-  broker: tcp://s75.iquizoo.com:1883
-  username: test
-  password: Test@123456
-  clientId: dagent

+ 0 - 8
dagent/src/main/resources/application.yml

@@ -1,8 +0,0 @@
-spring:
-  application:
-    name: autodop-agent
-  profiles:
-    # 注释这行后控制台没有日志
-    active: @profile.active@
-  banner:
-    location: classpath:banner.txt

+ 6 - 0
dagent/src/main/resources/mqtt.json

@@ -0,0 +1,6 @@
+{
+  "broker": "tcp://localhost:1883",
+  "username": "dev",
+  "password": "Dev@123456",
+  "clientId": "dagent"
+}

+ 47 - 28
dmaster/pom.xml

@@ -15,6 +15,18 @@
         <project.build.outputDir>${project.basedir}/bin</project.build.outputDir>
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>2.3.9.RELEASE</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
             <groupId>cn.reghao.autodop</groupId>
@@ -37,6 +49,24 @@
             <artifactId>spring-boot-starter-aop</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional>
+            <scope>true</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
         <dependency>
             <groupId>javax.validation</groupId>
             <artifactId>validation-api</artifactId>
@@ -69,6 +99,21 @@
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-cache</artifactId>
@@ -138,18 +183,6 @@
             <version>0.9.1</version>
         </dependency>
 
-        <!--<dependency>
-            <groupId>net.java.dev.jna</groupId>
-            <artifactId>jna</artifactId>
-            <version>4.1.0</version>
-        </dependency>-->
-
-        <dependency>
-            <groupId>org.libvirt</groupId>
-            <artifactId>libvirt</artifactId>
-            <version>0.5.1</version>
-        </dependency>
-
         <dependency>
             <groupId>org.dom4j</groupId>
             <artifactId>dom4j</artifactId>
@@ -162,21 +195,6 @@
             <version>RELEASE</version>
         </dependency>
 
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-mongodb</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-websocket</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>org.quartz-scheduler</groupId>
             <artifactId>quartz</artifactId>
@@ -232,6 +250,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
                 <configuration>
                     <source>11</source>
                     <target>11</target>
@@ -241,7 +260,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-resources-plugin</artifactId>
-                <!--<version>3.2.0</version>-->
+                <version>3.2.0</version>
                 <configuration>
                     <!-- 让 maven 不处理字体 -->
                     <nonFilteredFileExtensions>

+ 45 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/spring/BeansConfig.java

@@ -0,0 +1,45 @@
+package cn.reghao.autodop.dmaster.spring;
+
+import cn.reghao.autodop.common.mqtt.DefaultMqttClient;
+import cn.reghao.autodop.common.mqtt.MqttProperties;
+import cn.reghao.jdkutil.converter.ByteConverter;
+import cn.reghao.jdkutil.http.WebClient;
+import cn.reghao.jdkutil.http.WebRequest;
+import org.eclipse.paho.client.mqttv3.MqttException;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import oshi.SystemInfo;
+
+import java.io.IOException;
+
+/**
+ * @author reghao
+ * @date 2021-09-16 09:28:04
+ */
+@Configuration
+public class BeansConfig {
+    @Bean
+    public DefaultMqttClient mqttClient(MosquittoProperties mosquittoProperties) throws MqttException, IOException {
+        MqttProperties mqttProperties = new MqttProperties();
+        mqttProperties.setBroker(mosquittoProperties.getBroker());
+        mqttProperties.setClientId(mosquittoProperties.getClientId());
+        mqttProperties.setUsername(mosquittoProperties.getUsername());
+        mqttProperties.setPassword(mosquittoProperties.getPassword());
+        return new DefaultMqttClient(mqttProperties);
+    }
+
+    @Bean
+    public SystemInfo systemInfo() {
+        return new SystemInfo();
+    }
+
+    @Bean
+    public WebRequest webRequest() {
+        return new WebClient();
+    }
+
+    @Bean
+    public ByteConverter byteConverter() {
+        return new ByteConverter();
+    }
+}

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/mqtt/MosquittoProperties.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/spring/MosquittoProperties.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.mqtt;
+package cn.reghao.autodop.dmaster.spring;
 
 import lombok.Data;
 import org.springframework.beans.factory.annotation.Value;

+ 2 - 26
pom.xml

@@ -17,17 +17,11 @@
     <name>autodop</name>
     <description>devops</description>
 
-    <parent>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.9.RELEASE</version>
-        <relativePath/> <!-- lookup parent from repository -->
-    </parent>
-
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <java.version>11</java.version>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
     </properties>
 
     <repositories>
@@ -44,30 +38,12 @@
             <version>1.0.0</version>
         </dependency>
 
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <optional>true</optional>
-            <scope>true</scope>
-        </dependency>
-
         <dependency>
             <groupId>org.eclipse.paho</groupId>
             <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
             <version>1.2.0</version>
         </dependency>
 
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-configuration-processor</artifactId>
-            <optional>true</optional>
-        </dependency>
-
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>