reghao 5 yıl önce
ebeveyn
işleme
4a9120f5d7

+ 3 - 7
common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/cpu/CPU.java

@@ -47,17 +47,13 @@ public class CPU {
 
         Map<String, String> info = result.get(0);
         CPUInfo cpuInfo = new CPUInfo();
-
+        // Raspbian 系统没有此字段
         String cpuCores = info.get("cpu cores");
         if (cpuCores != null) {
-            cpuInfo.setCpuCores(Integer.parseInt(info.get("cpu cores")));
-        }
-
-        String vendorId = info.get("vendor_id");
-        if (vendorId != null) {
-            cpuInfo.setVendorId(vendorId);
+            cpuInfo.setCpuCores(Integer.parseInt(cpuCores));
         }
 
+        cpuInfo.setVendorId(info.get("vendor_id"));
         cpuInfo.setModelName(info.get("model name"));
         cpuInfo.setBogoMips(info.get("bogomips"));
 

+ 2 - 2
dagent/pom.xml

@@ -78,10 +78,10 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
+                <!--<configuration>
                     <executable>true</executable>
                     <fork>true</fork>
-                </configuration>
+                </configuration>-->
             </plugin>
         </plugins>
     </build>

+ 1 - 3
dagent/src/main/java/cn/reghao/autodop/dagent/DagentApplication.java

@@ -1,10 +1,8 @@
 package cn.reghao.autodop.dagent;
 
 import cn.reghao.autodop.dagent.utils.lifecycle.BeforeAppShutdown;
-import cn.reghao.autodop.dagent.utils.spring.LoggingInitializer;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 
@@ -18,7 +16,7 @@ public class DagentApplication {
 
 	public static void main(String[] args) {
 		SpringApplication app = new SpringApplication(DagentApplication.class);
-		app.addInitializers(new LoggingInitializer());
+		//app.addInitializers(new LoggingInitializer());
 		app.run(args);
 		//SpringApplication.run(DagentApplication.class, args);
 	}

+ 3 - 3
dagent/src/main/java/cn/reghao/autodop/dagent/utils/lifecycle/AfterAppStart.java

@@ -8,7 +8,7 @@ import cn.reghao.autodop.common.dagent.machine.api.MachineOps;
 import cn.reghao.autodop.common.utils.serializer.JsonConverter;
 import cn.reghao.autodop.dagent.machine.timer.HeartbeatJob;
 import cn.reghao.autodop.dagent.machine.timer.MachineScheduler;
-import cn.reghao.autodop.dagent.utils.spring.LoggerInitializer;
+import cn.reghao.autodop.dagent.utils.log.LoggerConfig;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.SchedulerException;
 import org.springframework.boot.ApplicationArguments;
@@ -69,7 +69,7 @@ public class AfterAppStart implements ApplicationRunner {
     }
 
     private void initLogger() {
-        LoggerInitializer loggerInitializer = new LoggerInitializer();
-        loggerInitializer.initialize(rabbitProperties);
+        LoggerConfig loggerConfig = new LoggerConfig();
+        loggerConfig.initialize(rabbitProperties);
     }
 }

+ 4 - 3
dagent/src/main/java/cn/reghao/autodop/dagent/utils/spring/LoggerInitializer.java → dagent/src/main/java/cn/reghao/autodop/dagent/utils/log/LoggerConfig.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dagent.utils.spring;
+package cn.reghao.autodop.dagent.utils.log;
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
@@ -18,7 +18,7 @@ import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
  * @author reghao
  * @date 2021-02-23 23:53:35
  */
-public class LoggerInitializer {
+public class LoggerConfig {
     private LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
 
     public void initialize(RabbitProperties rabbitProperties) {
@@ -30,7 +30,8 @@ public class LoggerInitializer {
 
     private Appender<ILoggingEvent> amqpAppender(RabbitProperties rabbitProperties) {
         PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
-        layoutEncoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
+        //layoutEncoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
+        layoutEncoder.setPattern("%d{yyyy-MM-dd HH:mm:ss} [%c] [%p] %m%n");
         layoutEncoder.setContext(loggerContext);
         layoutEncoder.start();
 

+ 1 - 1
dagent/src/main/java/cn/reghao/autodop/dagent/utils/spring/LoggingInitializer.java → dagent/src/main/java/cn/reghao/autodop/dagent/utils/log/LoggingInitializer.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dagent.utils.spring;
+package cn.reghao.autodop.dagent.utils.log;
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;

+ 0 - 53
dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/amqp/DmasterConsumerConfig.java

@@ -1,53 +0,0 @@
-package cn.reghao.autodop.dmaster.utils.amqp;
-
-import cn.reghao.autodop.common.dagent.machine.Machine;
-import org.springframework.amqp.core.Binding;
-import org.springframework.amqp.core.BindingBuilder;
-import org.springframework.amqp.core.DirectExchange;
-import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * dmaster 队列消费者
- *
- * @author reghao
- * @date 2020-09-04 10:57:56
- */
-//@Configuration
-public class DmasterConsumerConfig {
-    private DmasterConsumer dmasterConsumer;
-
-    public DmasterConsumerConfig(DmasterConsumer dmasterConsumer) {
-        this.dmasterConsumer = dmasterConsumer;
-    }
-
-    @Bean
-    DirectExchange directExchange(){
-        return new DirectExchange("amq.direct", true, false);
-    }
-
-    @Bean
-    public Queue dmasterQueue() {
-        String queueName = "dmaster";
-        //String queueName = "dmaster@" + Machine.machineId();
-        return new Queue(queueName, true);
-    }
-
-    @Bean
-    Binding bindingQueueToExchange(DirectExchange directExchange) {
-        String routeKey = Machine.machineId();
-        return BindingBuilder.bind(dmasterQueue()).to(directExchange).with("dmaster");
-    }
-
-    @Bean
-    public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) {
-        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
-        container.setConnectionFactory(connectionFactory);
-        container.setMessageListener(dmasterConsumer);
-        container.addQueues(dmasterQueue());
-        return container;
-    }
-}

+ 0 - 22
dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/amqp/LogConsumer.java

@@ -1,22 +0,0 @@
-package cn.reghao.autodop.dmaster.utils.amqp;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.core.Message;
-import org.springframework.amqp.core.MessageListener;
-import org.springframework.stereotype.Component;
-
-/**
- * dmaster 消息分发
- *
- * @author reghao
- * @date 2020-09-04 11:00:22
- */
-@Slf4j
-@Component
-public class LogConsumer implements MessageListener {
-    @Override
-    public void onMessage(Message msg) {
-        String body = new String(msg.getBody());
-        log.info("dagent 日志...");
-    }
-}

+ 0 - 51
dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/amqp/LogConsumerConfig.java

@@ -1,51 +0,0 @@
-package cn.reghao.autodop.dmaster.utils.amqp;
-
-import org.springframework.amqp.core.Binding;
-import org.springframework.amqp.core.BindingBuilder;
-import org.springframework.amqp.core.DirectExchange;
-import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * log 队列消费者
- *
- * @author reghao
- * @date 2020-09-04 10:57:56
- */
-@Configuration
-public class LogConsumerConfig {
-    private LogConsumer logConsumer;
-
-    public LogConsumerConfig(LogConsumer logConsumer) {
-        this.logConsumer = logConsumer;
-    }
-
-    @Bean
-    DirectExchange logDirectExchange(){
-        return new DirectExchange("rabbit.log", true, false);
-    }
-
-    @Bean
-    public Queue logQueue() {
-        String queueName = "log";
-        return new Queue(queueName, true);
-    }
-
-    @Bean
-    Binding bindingLogQueueToLogExchange(DirectExchange directExchange) {
-        String routeKey = "info";
-        return BindingBuilder.bind(logQueue()).to(directExchange).with(routeKey);
-    }
-
-    @Bean
-    public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) {
-        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
-        container.setConnectionFactory(connectionFactory);
-        container.setMessageListener(logConsumer);
-        container.addQueues(logQueue());
-        return container;
-    }
-}

+ 1 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/amqp/MachineDispatcher.java

@@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
  */
 @Slf4j
 @Component
-public class MachineDispatcher implements MessageDispatcher {
+public class MachineDispatcher {
     private MachineCrudService machineCrudService;
     private MachineLogCrudService machineLogCrudService;
 
@@ -26,7 +26,6 @@ public class MachineDispatcher implements MessageDispatcher {
         this.machineLogCrudService = machineLogCrudService;
     }
 
-    @Override
     public void dispatch(String ops, String payload) {
         try {
             switch (MachineOps.valueOf(ops)) {

+ 0 - 9
dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/amqp/MessageDispatcher.java

@@ -1,9 +0,0 @@
-package cn.reghao.autodop.dmaster.utils.amqp;
-
-/**
- * @author reghao
- * @date 2020-12-30 10:26:47
- */
-public interface MessageDispatcher {
-    void dispatch(String ops, String payload);
-}

+ 27 - 14
dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/amqp/DmasterConsumer.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/amqp/RabbitConsumer.java

@@ -1,33 +1,38 @@
 package cn.reghao.autodop.dmaster.utils.amqp;
 
-import cn.reghao.autodop.common.amqp.MqMessage;
 import cn.reghao.autodop.common.amqp.MessageType;
+import cn.reghao.autodop.common.amqp.MqMessage;
 import cn.reghao.autodop.common.utils.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.core.Message;
-import org.springframework.amqp.core.MessageListener;
+import org.springframework.amqp.rabbit.annotation.Exchange;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.QueueBinding;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.messaging.handler.annotation.Payload;
 import org.springframework.stereotype.Component;
 
 /**
- * dmaster 消息分发
+ * 消息分发
  *
  * @author reghao
  * @date 2020-09-04 11:00:22
  */
 @Slf4j
-//@Component
-public class DmasterConsumer implements MessageListener {
-    private MessageDispatcher machineMessageDispatcher;
+@Component
+public class RabbitConsumer {
+    private MachineDispatcher machineDispatcher;
 
-    public DmasterConsumer(MessageDispatcher machineMessageDispatcher) {
-        this.machineMessageDispatcher = machineMessageDispatcher;
+    public RabbitConsumer(MachineDispatcher machineDispatcher) {
+        this.machineDispatcher = machineDispatcher;
     }
 
-    @Override
-    public void onMessage(Message msg) {
-        String body = new String(msg.getBody());
+    @RabbitListener(bindings = @QueueBinding(
+            value = @Queue(value = "dmaster", durable = "true"),
+            exchange = @Exchange(value = "amq.direct"))
+    )
+    public void dmasterQueueConsumer(@Payload String msg) {
         try {
-            MqMessage mqMessage = (MqMessage) JsonConverter.jsonToObject(body, MqMessage.class);
+            MqMessage mqMessage = (MqMessage) JsonConverter.jsonToObject(msg, MqMessage.class);
             String machineId = mqMessage.getMachineId();
             long sendTime = mqMessage.getSendTime();
             boolean isRpc = mqMessage.isRpc();
@@ -38,7 +43,7 @@ public class DmasterConsumer implements MessageListener {
             log.info("MQMessage from {}...", machineId);
             switch (MessageType.valueOf(type)) {
                 case machineType:
-                    machineMessageDispatcher.dispatch(ops, payload);
+                    machineDispatcher.dispatch(ops, payload);
                     break;
                 case appType:
                     log.info("msg from app...");
@@ -49,4 +54,12 @@ public class DmasterConsumer implements MessageListener {
             log.error(e.getMessage());
         }
     }
+
+    @RabbitListener(bindings = @QueueBinding(
+            value = @Queue(value = "log", durable = "true"),
+            exchange = @Exchange(value = "rabbit.log"))
+    )
+    public void logQueueConsumer(@Payload String msg) {
+        log.info("日志消息 -> {}", msg);
+    }
 }