Compare commits
2 Commits
93670ee60d
...
13d4188794
| Author | SHA1 | Date | |
|---|---|---|---|
| 13d4188794 | |||
| e84265cff3 |
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.idata.tools.relationcompletion;
|
||||||
|
|
||||||
|
import com.idata.tools.relationcompletion.completion.RelationCompletion;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class RelationCompletionApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ConfigurableApplicationContext context = SpringApplication.run(RelationCompletionApplication.class, args);
|
||||||
|
RelationCompletion relationCompletion = context.getBean(RelationCompletion.class);
|
||||||
|
relationCompletion.relationCompletion();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -25,6 +25,7 @@ import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -76,20 +77,28 @@ public class RelationCompletion {
|
||||||
SessionPool sessionPool = graphCommonService.newPoolConfig();
|
SessionPool sessionPool = graphCommonService.newPoolConfig();
|
||||||
for (TagEnum tagEnum : TagEnum.values()) {
|
for (TagEnum tagEnum : TagEnum.values()) {
|
||||||
String tag = tagEnum.getTag();
|
String tag = tagEnum.getTag();
|
||||||
|
log.info("开启{}类型的点为起始节点反向关系补全", tag);
|
||||||
List<NebulaMultiMatchJsonResult> idJsonResults =
|
List<NebulaMultiMatchJsonResult> idJsonResults =
|
||||||
graphCommonService.executeJson(NebulaUtil.getTagIds(spaceName, tag), NebulaMultiMatchJsonResult.class);
|
graphCommonService.executeJson(NebulaUtil.getTagIds(spaceName, tag), NebulaMultiMatchJsonResult.class);
|
||||||
List<String> idLists = NebulaMultiMatchJsonResult.getIdLists(idJsonResults.get(0));
|
List<String> idLists = NebulaMultiMatchJsonResult.getIdLists(idJsonResults.get(0));
|
||||||
map.put(tag, idLists);
|
map.put(tag, idLists);
|
||||||
// 遍历边
|
// 遍历边
|
||||||
EdgeEnum[] edgeEnums = EdgeEnum.values();
|
EdgeEnum[] edgeEnums = EdgeEnum.values();
|
||||||
|
AtomicLong atomicLong = new AtomicLong(0);
|
||||||
Stream.of(edgeEnums)
|
Stream.of(edgeEnums)
|
||||||
.forEach(edgeEnum -> {
|
.forEach(edgeEnum -> {
|
||||||
|
log.info("开启{}类型的点, 为起始节点; {}类型的边的反向关系补全, ", tag, edgeEnum.getEdgeType(),
|
||||||
|
"反向关系为: {}", edgeEnum.getReverseRelation());
|
||||||
CompletableFuture<Void> reverseFuture = CompletableFuture.runAsync(() -> {
|
CompletableFuture<Void> reverseFuture = CompletableFuture.runAsync(() -> {
|
||||||
String srcTag = edgeEnum.getSrcTag();
|
String srcTag = edgeEnum.getSrcTag();
|
||||||
String dstTag = edgeEnum.getDstTag();
|
|
||||||
String edgeType = edgeEnum.getEdgeType();
|
String edgeType = edgeEnum.getEdgeType();
|
||||||
String reverseRelation = edgeEnum.getReverseRelation();
|
String reverseRelation = edgeEnum.getReverseRelation();
|
||||||
for (String id : idLists) {
|
for (String id : idLists) {
|
||||||
|
atomicLong.incrementAndGet();
|
||||||
|
if (atomicLong.get() / 1000 == 0) {
|
||||||
|
log.info("进行{}类型的点, 为起始节点; {}类型的边的反向关系补全, ", tag, edgeEnum.getEdgeType(),
|
||||||
|
"反向关系为: {}", edgeEnum.getReverseRelation(), "进度: {}", atomicLong.get(), "/", idLists.size());
|
||||||
|
}
|
||||||
List<NebulaVertexJsonResult> vertexJsonResults = graphCommonService.executeJsonWithoutLogs(
|
List<NebulaVertexJsonResult> vertexJsonResults = graphCommonService.executeJsonWithoutLogs(
|
||||||
NebulaUtil.getDstVerticesById(spaceName, srcTag, id, edgeType),
|
NebulaUtil.getDstVerticesById(spaceName, srcTag, id, edgeType),
|
||||||
NebulaVertexJsonResult.class,
|
NebulaVertexJsonResult.class,
|
||||||
|
|
@ -101,8 +110,11 @@ public class RelationCompletion {
|
||||||
}
|
}
|
||||||
}, threadPoolExecutor);
|
}, threadPoolExecutor);
|
||||||
reverseFuture.join();
|
reverseFuture.join();
|
||||||
|
atomicLong.set(0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
sessionPool.release();
|
||||||
|
threadPoolExecutor.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
71
relation-completion/src/main/resources/logback-spring.xml
Normal file
71
relation-completion/src/main/resources/logback-spring.xml
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- scan为true时,如果配置文件发生改变将会进行重新加载 -->
|
||||||
|
<!-- scanPeriod属性设置监测配置文件修改的时间间隔,默认单位为毫秒,在scan为true时才生效 -->
|
||||||
|
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds">
|
||||||
|
<contextName>logback</contextName>
|
||||||
|
<property name="log.path" value="./logs" />
|
||||||
|
<property name="app.name" value="relation-completion"/>
|
||||||
|
|
||||||
|
<!-- 彩色日志 -->
|
||||||
|
<!-- 彩色日志依赖的渲染类 -->
|
||||||
|
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
|
||||||
|
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
|
||||||
|
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
|
||||||
|
<!-- 彩色日志格式 -->
|
||||||
|
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) | %clr(${PID:- }){magenta} | %clr(%15.15t){faint} | %X{TRACE_ID} | %X{TRACE_ID} | %clr(%-40.40logger{39}:%-4.4line){cyan} | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||||
|
|
||||||
|
<!-- 日志格式 -->
|
||||||
|
<property name="LOG_PATTERN" value="${LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} | ${LOG_LEVEL_PATTERN:-%5p} | ${PID:- } | %15.15t | %X{TRACE_ID} |%-40.40logger{39}:%-4.4line | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||||
|
|
||||||
|
<!--输出到控制台-->
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!--输出到文件,并按日期归档-->
|
||||||
|
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/${app.name}.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/${app.name}.%i.log</fileNamePattern>
|
||||||
|
<!-- 日志文件最大限制 -->
|
||||||
|
<maxFileSize>16MB</maxFileSize>
|
||||||
|
<!-- 日志保留天数 -->
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>512MB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!--输出错误日志文件-->
|
||||||
|
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/error.%i.log</fileNamePattern>
|
||||||
|
<maxFileSize>16MB</maxFileSize>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>512MB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<!--过滤掉所有低于该级别的日志-->
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>ERROR</level>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE" />
|
||||||
|
<appender-ref ref="FILE" />
|
||||||
|
<appender-ref ref="ERROR_FILE"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
Loading…
Reference in New Issue
Block a user