浏览代码

重新发送到mq

gxt 3 年之前
父节点
当前提交
cae1674345

+ 3 - 0
src/main/java/com/gct/tools/etlcamelhuge/entity/DiagnoseMsg.java

@@ -17,11 +17,14 @@ public class DiagnoseMsg implements MessageBody {
17 17
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
18 18
     private String prodDate;
19 19
     private String sgt;
20
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
20 21
     private String rcvDate;
21 22
     private double s;
22 23
     private double n;
23 24
 
24 25
 
26
+
27
+
25 28
     @Override
26 29
     public String toJsonBody() {
27 30
         return JSONObject.toJSONString(this);

+ 25 - 67
src/main/java/com/gct/tools/etlcamelhuge/routeconfig/CamelFileConfiguration.java

@@ -1,21 +1,25 @@
1 1
 package com.gct.tools.etlcamelhuge.routeconfig;
2 2
 
3
-import org.apache.camel.Message;
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.gct.tools.etlcamelhuge.MQ.MessageProducer;
5
+import com.gct.tools.etlcamelhuge.entity.DiagnoseMsg;
4 6
 import org.apache.camel.builder.RouteBuilder;
5 7
 import org.apache.camel.component.file.GenericFile;
8
+import org.apache.commons.lang3.StringUtils;
6 9
 import org.slf4j.Logger;
7 10
 import org.slf4j.LoggerFactory;
8 11
 import org.springframework.context.annotation.Bean;
9 12
 import org.springframework.context.annotation.Configuration;
10 13
 
14
+import javax.annotation.Resource;
11 15
 import java.io.BufferedReader;
12 16
 import java.io.File;
13 17
 import java.io.FileInputStream;
14 18
 import java.io.InputStreamReader;
15
-import java.time.Duration;
16
-import java.time.LocalDateTime;
17
-import java.util.Date;
18
-import java.util.UUID;
19
+import java.util.ArrayList;
20
+import java.util.Arrays;
21
+import java.util.Collections;
22
+
19 23
 
20 24
 /**
21 25
  * class name: CamelFileConfiguration
@@ -24,82 +28,36 @@ import java.util.UUID;
24 28
  * @version 1.0
25 29
  * @since 2021/4/14 下午3:07
26 30
  */
27
-//@Configuration
31
+@Configuration
28 32
 public class CamelFileConfiguration {
29 33
 
34
+    @Resource(name = "diagnoseMessageProducer")
35
+    private MessageProducer producer;
36
+
30 37
     @Bean
31 38
     RouteBuilder routeBuilderFile() {
32 39
         return new RouteBuilder() {
33 40
             private Object apply(GenericFile genericFile) {
34
-                File actualFile = File.class.cast(genericFile.getFile());
41
+                File actualFile = (File) genericFile.getFile();
35 42
                 try {
36 43
                     BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(actualFile)));
37
-                    StringBuilder s = new StringBuilder();
38 44
                     while (true) {
39
-                        String s1 = in.readLine();
40
-                        s.append(s1);
41
-                        s.append("@MGT");
42
-
43
-                        if (s1 == null || s1.isEmpty()) break;
44
-
45
-//						s.append("\r\n");
45
+                        String body = in.readLine();
46
+                        if (body == null || body.equals("")) break;
47
+                        DiagnoseMsg diagnoseMsg = JSONObject.parseObject(body, DiagnoseMsg.class);
48
+                        producer.send(diagnoseMsg);
46 49
                     }
47
-                    s.append("\n,OK by lloyd!\n");
48
-                    log.info("return s ::{}", s.toString());
49
-                    return s.toString();
50
-//							FileWriter writer = new FileWriter(actualFile);
51
-
52
-//							writer.append("your code perfect");
53
-//							writer.close();
54
-                } catch (Exception e) {
55
-                    throw new RuntimeException("OK!there is a error");
50
+                } catch (Exception ignored) {
56 51
                 }
52
+                return new Object();
57 53
             }
58 54
 
59
-            Logger log = LoggerFactory.getLogger(this.getClass());
60
-
61 55
             @Override
62
-            public void configure() throws Exception {
63
-//				from("jms-queue:queue:my-queue")
64
-                from("file:{{user.home}}/Desktop/cameltest/in")
65
-                        .routeId("file-to-file")
66
-                        .transform()
67
-                        .body(GenericFile.class, this::apply)
68
-                        .log("this is my test -camel")
69
-                        .setHeader("CamelFileName", () -> UUID.randomUUID().toString())
70
-                        .tracing()
71
-                        .process()
72
-                        .exchange(exchange -> {
73
-                            new Date().toInstant();
74
-                            LocalDateTime start = LocalDateTime.now();
75
-                            final Message in = exchange.getIn();
76
-                            String body = in.getBody(String.class);
77
-                            log.info("body is {}", body);
78
-                            Thread t = new Thread(() -> {
79
-                                while (true) {
80
-                                    try {
81
-                                        Thread.sleep(1000);
82
-                                    } catch (InterruptedException e) {
83
-                                        e.printStackTrace();
84
-                                    }
85
-                                    log.warn("thread completed");
86
-                                    break;
87
-                                }
88
-                            });
89
-                            t.start();
90
-
91
-                            try {
92
-                                t.join();
93
-
94
-                            } catch (InterruptedException e) {
95
-                                e.printStackTrace();
96
-                            }
97
-
98
-                            final LocalDateTime end = LocalDateTime.now();
99
-                            final long l = Duration.between(start, end).toDays();
100
-                            log.warn("run with time : {}", l);
101
-                        })
102
-                        .to("file:{{user.home}}/Desktop/cameltest/out");
56
+            public void configure() {
57
+                from("file:{{user.home}}/logs/etl/dgns-msg/")
58
+                        .routeId("file-to-MQ").transform(
59
+                        ).body(GenericFile.class, this::apply)
60
+                        .end();
103 61
             }
104 62
         };
105 63
     }

+ 3 - 125
src/main/resources/logback-spring.xml

@@ -8,7 +8,7 @@
8 8
     <contextName>logback</contextName>
9 9
 
10 10
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
11
-    <property name="log.path" value="/home/logs" />
11
+    <property name="log.path" value="${user.home}/logs/etl/dgns-msg/" />
12 12
 
13 13
     <!--0. 日志格式和颜色渲染 -->
14 14
     <!-- 彩色日志依赖的渲染类 -->
@@ -31,114 +31,7 @@
31 31
         </encoder>
32 32
     </appender>
33 33
 
34
-    <!--2. 输出到文档-->
35
-    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
36
-    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
37
-        <!-- 正在记录的日志文档的路径及文档名 -->
38
-        <file>${log.path}/web_debug.log</file>
39
-        <!--日志文档输出格式-->
40
-        <encoder>
41
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
42
-            <charset>UTF-8</charset> <!-- 设置字符集 -->
43
-        </encoder>
44
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
45
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
46
-            <!-- 日志归档 -->
47
-            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
48
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
49
-                <maxFileSize>100MB</maxFileSize>
50
-            </timeBasedFileNamingAndTriggeringPolicy>
51
-            <!--日志文档保留天数-->
52
-            <maxHistory>15</maxHistory>
53
-        </rollingPolicy>
54
-        <!-- 此日志文档只记录debug级别的 -->
55
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
56
-            <level>debug</level>
57
-            <onMatch>ACCEPT</onMatch>
58
-            <onMismatch>DENY</onMismatch>
59
-        </filter>
60
-    </appender>
61
-
62
-    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
63
-    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
64
-        <!-- 正在记录的日志文档的路径及文档名 -->
65
-        <file>${log.path}/web_info.log</file>
66
-        <!--日志文档输出格式-->
67
-        <encoder>
68
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
69
-            <charset>UTF-8</charset>
70
-        </encoder>
71
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
72
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
73
-            <!-- 每天日志归档路径以及格式 -->
74
-            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
75
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
76
-                <maxFileSize>100MB</maxFileSize>
77
-            </timeBasedFileNamingAndTriggeringPolicy>
78
-            <!--日志文档保留天数-->
79
-            <maxHistory>15</maxHistory>
80
-        </rollingPolicy>
81
-        <!-- 此日志文档只记录info级别的 -->
82
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
83
-            <level>info</level>
84
-            <onMatch>ACCEPT</onMatch>
85
-            <onMismatch>DENY</onMismatch>
86
-        </filter>
87
-    </appender>
88
-
89
-    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
90
-    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
91
-        <!-- 正在记录的日志文档的路径及文档名 -->
92
-        <file>${log.path}/web_warn.log</file>
93
-        <!--日志文档输出格式-->
94
-        <encoder>
95
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
96
-            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
97
-        </encoder>
98
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
99
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
100
-            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
101
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
102
-                <maxFileSize>100MB</maxFileSize>
103
-            </timeBasedFileNamingAndTriggeringPolicy>
104
-            <!--日志文档保留天数-->
105
-            <maxHistory>15</maxHistory>
106
-        </rollingPolicy>
107
-        <!-- 此日志文档只记录warn级别的 -->
108
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
109
-            <level>warn</level>
110
-            <onMatch>ACCEPT</onMatch>
111
-            <onMismatch>DENY</onMismatch>
112
-        </filter>
113
-    </appender>
114
-
115
-    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
116
-    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
117
-        <!-- 正在记录的日志文档的路径及文档名 -->
118
-        <file>${log.path}/web_error.log</file>
119
-        <!--日志文档输出格式-->
120
-        <encoder>
121
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
122
-            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
123
-        </encoder>
124
-        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
125
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
126
-            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
127
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
128
-                <maxFileSize>100MB</maxFileSize>
129
-            </timeBasedFileNamingAndTriggeringPolicy>
130
-            <!--日志文档保留天数-->
131
-            <maxHistory>15</maxHistory>
132
-        </rollingPolicy>
133
-        <!-- 此日志文档只记录ERROR级别的 -->
134
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
135
-            <level>ERROR</level>
136
-            <onMatch>ACCEPT</onMatch>
137
-            <onMismatch>DENY</onMismatch>
138
-        </filter>
139
-    </appender>
140
-
141
-    <appender name="aaaa" class="ch.qos.logback.core.rolling.RollingFileAppender">
34
+    <appender name="msg" class="ch.qos.logback.core.rolling.RollingFileAppender">
142 35
         <!-- 正在记录的日志文档的路径及文档名 -->
143 36
         <file>${log.path}/msg.log</file>
144 37
         <!--日志文档输出格式-->
@@ -168,25 +61,10 @@
168 61
         <logger name="com.sdcm.pmp" level="debug"/>
169 62
     </springProfile>
170 63
     <logger name="com.gct.tools.etlcamelhuge.MQ.DiagnoseMessageProducer"  additivity="false">
171
-        <appender-ref ref="aaaa" />
64
+        <appender-ref ref="msg" />
172 65
     </logger>
173 66
     <root level="info">
174 67
         <appender-ref ref="CONSOLE" />
175
-        <appender-ref ref="DEBUG_FILE" />
176
-        <appender-ref ref="INFO_FILE" />
177
-        <appender-ref ref="WARN_FILE" />
178
-        <appender-ref ref="ERROR_FILE" />
179 68
     </root>
180 69
 
181
-    <!-- 4.2 生产环境:输出到文档
182
-    <springProfile name="pro">
183
-        <root level="info">
184
-            <appender-ref ref="CONSOLE" />
185
-            <appender-ref ref="DEBUG_FILE" />
186
-            <appender-ref ref="INFO_FILE" />
187
-            <appender-ref ref="ERROR_FILE" />
188
-            <appender-ref ref="WARN_FILE" />
189
-        </root>
190
-    </springProfile> -->
191
-
192 70
 </configuration>