de halfwidth">
76
			aiIdenLog.setResourceToolName(String.valueOf(resourceToolMap.get("resourceToolName")));
77
			aiIdenLog.setMonitorSceneId(String.valueOf(sceneTerminalRelMap.get("monitorSceneId")));
78
			aiIdenLog.setMonitorSceneName(String.valueOf(sceneTerminalRelMap.get("monitorSceneName")));
79
			aiIdenLog.setEffectType(String.valueOf(sceneTerminalRelMap.get("effectType")));
80
			aiIdenLog.setTerminalPosition(String.valueOf(sceneTerminalRelMap.get("place")));
81
			
82
			
83
			
84
			
85
			
86
87
			CommonResponse<AiIdenLog> runningResult = aiTaskCommand.createAiIdenLog(new CommonRequest<AiIdenLog>(aiIdenLog));
45
			log.info("runningResult: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
88
			log.info("runningResult: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
46
			Assert.assertTrue(runningResult.isSuccess());
89
			Assert.assertTrue(runningResult.isSuccess());
47
90
51
			ack.acknowledge();// 手动提交偏移量
94
			ack.acknowledge();// 手动提交偏移量
52
		}
95
		}
53
	}
96
	}
97
54
}
98
}

+ 70 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/service/task/AIVideoKafkaTask.java

1
package com.ai.bss.security.protection.service.task;
2
3
import java.util.Map;
4
5
import org.apache.kafka.clients.consumer.ConsumerRecord;
6
import org.junit.Assert;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.kafka.annotation.KafkaListener;
9
import org.springframework.kafka.support.Acknowledgment;
10
import org.springframework.stereotype.Component;
11
12
import com.ai.abc.api.model.CommonResponse;
13
import com.ai.abc.util.JsonUtils;
14
import com.ai.bss.security.protection.service.interfaces.MonitorVideoLogManageService;
15
import com.ai.bss.security.protection.service.interfaces.ResourceToolManageService;
16
import com.ai.bss.work.safety.model.MonitorVideoLog;
17
import com.alibaba.fastjson.JSON;
18
import com.alibaba.fastjson.JSONObject;
19
import com.alibaba.fastjson.TypeReference;
20
21
import lombok.extern.slf4j.Slf4j;
22
23
/**
24
 * 创建AI监控视频日志
25
 * @author konghl@asiainfo.com
26
 * 2020-12-14
27
 */
28
@Component
29
@Slf4j
30
public class AIVideoKafkaTask {
31
32
	@Autowired
33
	private MonitorVideoLogManageService monitorVideoLogManageService;
34
35
	@Autowired
36
	private ResourceToolManageService resourceToolManageService;
37
38
	@KafkaListener(containerFactory = "kafkaBatchListener6", topics = "${kafka.topic.aivideo:topic_ai_video}", groupId = "ai_group")
39
	public void alarmListener(ConsumerRecord<String, String> records, Acknowledgment ack) throws Throwable {
40
		try {
41
			log.info("----------------AI监控视频日志消费开始---------------------------");
42
43
			String message = records.value();
44
			log.info("已接AI监控视频日志消息,消息为:" + message);
45
46
			JSONObject messageJson = JSONObject.parseObject(message);
47
			Map<String, Object> resourceToolMap = resourceToolManageService
48
					.queryResourceToolByCode(messageJson.getString("resourceToolCode"));
49
50
			if (resourceToolMap==null) {
51
				log.error("AI监控视频日志的设备CODE不存在: " + messageJson.getString("resourceToolCode"));
52
				throw new NullPointerException("resourceToolCode not exist");
53
			}
54
			
55
			MonitorVideoLog monitorVideoLog = JSON.parseObject(message, new TypeReference<MonitorVideoLog>() {
56
			});
57
			monitorVideoLog.setResourceToolId(String.valueOf(resourceToolMap.get("resourceToolId")));
58
59
			CommonResponse<MonitorVideoLog> runningResult = monitorVideoLogManageService
60
					.createMonitorVideoLog(monitorVideoLog);
61
			log.info("kafka aivideo runningResult: \n{}", JsonUtils.toJSONStringByDateFormat(runningResult, true));
62
			Assert.assertTrue(runningResult.isSuccess());
63
64
		} catch (Exception e) {
65
			log.error("AI监控视频日志消息的kafka消费异常: " + e.getMessage(), e);
66
		} finally {
67
			ack.acknowledge();// 手动提交偏移量
68
		}
69
	}
70
}

+ 15 - 0
security-protection-service/src/main/java/com/ai/bss/security/protection/utils/EbcConstant.java

39
	// 考勤查询:月
39
	// 考勤查询:月
40
	public static final String AREA_IN_OUT_RECORD_MONTH = "month";
40
	public static final String AREA_IN_OUT_RECORD_MONTH = "month";
41
41
42
	//AI识别结果:违规
43
	public static final String AI_IDENTIFY_RESULT_ALARM= "AI_IDENTIFY_RESULT_ALARM";
44
	
45
	//AI识别结果:考勤
46
	public static final String AI_IDENTIFY_RESULT_ATTENDANCE= "AI_IDENTIFY_RESULT_ATTENDANCE";
47
	
42
	// 静态常量: 工单类型
48
	// 静态常量: 工单类型
43
	public static final String BUSINESS_SPEC_WORK_ORDER_TYPE = "WORK_ORDER_TYPE";
49
	public static final String BUSINESS_SPEC_WORK_ORDER_TYPE = "WORK_ORDER_TYPE";
44
	
50
	
47
	
53
	
48
	// 静态常量: 监控场景类型
54
	// 静态常量: 监控场景类型
49
	public static final String BUSINESS_SPEC_MONITOR_SCENE_TYPE = "MONITOR_SCENE_TYPE";
55
	public static final String BUSINESS_SPEC_MONITOR_SCENE_TYPE = "MONITOR_SCENE_TYPE";
56
	
57
	// 静态常量: AI报警类型
58
	public static final String BUSINESS_SPEC_AI_ALARM_TYPE = "AI_ALARM_TYPE";
59
	
60
	// 静态常量: AI任务状态
61
	public static final String BUSINESS_SPEC_AI_TASK_STATUS = "AI_TASK_STATUS";
62
	
63
	// 静态常量: AI匹配模型
64
	public static final String BUSINESS_SPEC_AI_MATCHER_MODE = "AI_MATCHER_MODE";
50
65
51
	
66
	
52
	// 当前登录者的STAFF_ID
67
	// 当前登录者的STAFF_ID

+ 11 - 5
security-protection-service/src/main/resources/application.properties

28
#kafka.bootstrap-servers=47.105.160.21:9090
28
#kafka.bootstrap-servers=47.105.160.21:9090
29
kafka.bootstrap-servers=10.19.90.34:9090
29
kafka.bootstrap-servers=10.19.90.34:9090
30
kafka.topic.aitask=topic_ai_task
30
kafka.topic.aitask=topic_ai_task
31
kafka.topic.aialarm=topic_ai_alarm
32
kafka.topic.aiattendance=topic_ai_attendance
31
kafka.topic.aivideo=topic_ai_video
33
kafka.producer.batch-size=16785
32
kafka.producer.batch-size=16785
34
kafka.producer.retries=1
33
kafka.producer.retries=1
35
kafka.producer.buffer-memory=33554432
34
kafka.producer.buffer-memory=33554432
51
minio.accessKey=minioadmin
50
minio.accessKey=minioadmin
52
minio.secretKey=minioadmin
51
minio.secretKey=minioadmin
53
minio.secure=false
52
minio.secure=false
54
minio.bucketHeaderImage=prod-dev
55
minio.faceAddServiceUrl=http://10.21.10.28:9018/api/face/add
53
minio.faceAddServiceUrl=http://10.21.10.28:9018/api/face/add
56
minio.face-del-service-url=http://10.21.10.28:9018/api/face/del
54
minio.face-del-service-url=http://10.21.10.28:9018/api/face/del
57
minio.face-recog-service-url=http://10.21.10.28:9018/api/face/recog
55
minio.face-recog-service-url=http://10.21.10.28:9018/api/face/recog
58
56
59
myminio.bucketWorkToolImage=tool-image
60
myminio.bucketWorkToolView=tool-view
57
# \u4eba\u8138\u8bc6\u522b
58
minio.bucketHeaderImage=prod-dev
59
60
# \u8bbe\u5907\u9ed8\u8ba4\u7167\u7247
61
spminio.bucketToolImage=tool-image
62
# \u76d1\u63a7\u89c6\u9891
63
spminio.bucketAiVideo=ai-video
64
# \u76d1\u63a7\u89c6\u9891\u622a\u56fe
65
spminio.bucketAiImage=ai-image
66
61
67
62
# CACHE
68
# CACHE
63
#spring.cache.type=ehcache
69
#spring.cache.type=ehcache

自己解析配置中心推送来的配置信息 · 3a81df8705 - Nuosi Git Service
浏览代码

自己解析配置中心推送来的配置信息

weihf 5 年之前
父节点
当前提交
3a81df8705

+ 34 - 0
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/config/NacosConfig.java

@ -0,0 +1,34 @@
1
package com.ai.ipu.server.config;
2

3

4
import org.springframework.context.annotation.Bean;
5
import org.springframework.context.annotation.Configuration;
6

7
import com.alibaba.nacos.api.config.annotation.NacosConfigListener;
8
import com.alibaba.nacos.api.config.annotation.NacosValue;
9

10

11
@Configuration
12
public class NacosConfig {
13
	//在Configuration中动态更新将失效,需要自己在onMessage里解析更新后的配置文件,再用解析后的值覆盖
14
	@NacosValue(value = "${service001Url:defaultValue}", autoRefreshed = true)
15
    private String service001Url;
16
	@NacosValue(value = "${service001Param:defaultValue}", autoRefreshed = true)
17
    private String service001Param;
18
	
19
	@Bean(name="getService001Url")
20
	public String getService001Url() {
21
		return service001Url;
22
	}
23
	
24
	@Bean(name="getService001Param")
25
	public String getService001Param() {
26
		return service001Param;
27
	}
28
	
29
	@NacosConfigListener(dataId = "myService")
30
	public void onMessage(String config) {
31
	    System.out.println(config);
32
	    //需要自己解析配置文件
33
	}
34
}

+ 25 - 0
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/control/NacosConsumerControl.java

@ -2,6 +2,7 @@ package com.ai.ipu.server.control;
2 2

3 3
import org.slf4j.Logger;
4 4
import org.slf4j.LoggerFactory;
5
import org.springframework.beans.factory.annotation.Autowired;
5 6
import org.springframework.beans.factory.annotation.Value;
6 7
import org.springframework.http.ResponseEntity;
7 8
import org.springframework.stereotype.Controller;
@ -10,6 +11,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
10 11
import org.springframework.web.bind.annotation.ResponseBody;
11 12
import org.springframework.web.client.RestTemplate;
12 13

14
import com.ai.ipu.server.config.NacosConfig;
15
import com.ai.ipu.server.util.SpringUtil;
13 16
import com.alibaba.nacos.api.annotation.NacosInjected;
14 17
import com.alibaba.nacos.api.config.annotation.NacosValue;
15 18
import com.alibaba.nacos.api.exception.NacosException;
@ -70,4 +73,26 @@ public class NacosConsumerControl {
70 73
		}
71 74
        return null;
72 75
    }
76
	@Autowired
77
	NacosConfig config;
78
	@ResponseBody
79
    @GetMapping(value = "/service001test")
80
    public String service001test() throws NacosException {
81
		try {
82
			if (namingService != null) {
83
				// 选择user_service服务的一个健康的实例(可配置负载均衡策略)
84
				Instance instance = namingService.selectOneHealthyInstance("ipu-rest-scaffold");
85
				// 拼接请求接口url并请求选取的实例
86
				String url = "http://" + instance.getIp() + ":" + instance.getPort() + config.getService001Url() + "?message=" + appName;
87
				logger.debug(String.format("请求URL:%s", url));
88
				ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
89
				logger.debug(String.format("响应结果:%s", entity.getBody()));
90
				return entity.getBody();
91
			}
92
		} catch (Exception e) {
93
			logger.error("get instance from nacos error", e);
94
		}
95
        return null;
96
    }
97
	
73 98
}