# 数据采集组件

# 背景

从最初的普成机械的数据采集,经历东方特钢的大屏数据的采集、立源机械的数控机床的数据采集、爱可青的冲床数据采集,采集部分的主体框架相同。由于采集模块中内嵌了业务代码,包括数据的解析、处理、封装以及存储,代码的耦合性由此变得很强,后续代码的维护难度可想而知。

因此,希望通过将数据采集部分的通用代码独立出来,一来能单独维护这块代码,减少系统内部的耦合,其次能够通过专门维护来增强采集功能的健壮性。

# 组件要求

首先能够满足快速快速搭建采集组件的要求。通过预置常用的一些采集模板达到快速开发的目的。

其次能够通过扩展支持各种各样不同的场景。主要通过对外暴露一些接口或者抽象类,让调用者能够自定义一些实现类,去实现不同的采集功能。

# 开发环境

开发平台:windows 10
jdk版本:jdk1.7

# 快速使用

  • 引入依赖包
<dependency>
    <groupId>com.zb.collect</groupId>
	<artifactId>collect</artifactId>
	<version>1.0.1-SNAPSHOT</version>
</dependency>
  • 定义采集器
@Component
public class HttpCollerctor extends HttpCollector{
	public HttpCollerctor() {
		super("Http采集器", new HTTPDataListener(), 8686);
	}
}
  • 启动采集服务
@Component
public class StartServerAfterBootstarp implements ApplicationListener<ContextRefreshedEvent> {
	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		if(event.getApplicationContext().getParent() == null){			
			CollectService.getInstance().startService();
			MessageCenter.getInstance().startService();
		}
	}
}

启动项目,如果看到控制台打印以下日志,这说明采集组件成功启动。

[com.zbmes.datacollect.collector.HttpCollerctor:60] [INFO] - HTTP Server Startup At:8686

# 内置组件

# http采集器

继承com.zb.data.collect.collector.HttpCollector采集器即可。


构造方法 说明
HttpCollector(String processName, IDataListener listener) processName:采集器名称
listener:监听器实例
端口采用默认端口:8181
HttpCollector(String processName, IDataListener listener, Integer serverPort) processName:采集器名称
listener:监听器实例
serverPort:服务端口
此采集器默认规则:

  1. 接口路径地址为项目根路径。即/。
  2. 接口请求仅支持Http的POST请求。采用UTF-8解码。
  3. 请求响应为success或fail。采用UTF-8编码。
  4. 响应返回后,会立即关闭通道连接。但端口监听仍在。

# 内置监听器

com.zb.data.collect.listener.HTTPDataListener监听器可直接使用。


构造方法 说明
dataCollect(String body) body:数据内容

# 内置处理器

实现com.zb.data.message.handler.HttpDataHandler处理器即可。


构造方法 说明
handle(ZBMessage message) message:数据内容

# 进阶操作

# 采集组件控制

辅助类com.zb.data.bootstrap.CollectServiceBootstrapUtils


startAllServices() 一键启动所有服务
stopAllServices() 一键停止所有服务

# 自定义采集器

须继承com.zb.data.collect.collector.AbstractCollector处理器抽象方法。

# 自定义监听器

须实现com.zb.data.collect.IDataListener接口。

# 自定义处理器

须继承com.zb.data.message.handler.HttpDataHandler接口。

# 参数配置

组件采用的默认配置文件为classpath:/conf/data-collect.properties
各参数名、参数含义以及其默认值如下:




参数 含义 默认值 备注
data.debug 调试模式 false
data.message.maxThreadSize 处理器的最大线程数。适当调大该参数值能提高组件的并行处理能力。 20

# 更新日志

# V1.0.1 2020-10-15

引入依赖:

<dependency>
    <groupId>com.zb.collect</groupId>
	<artifactId>collect</artifactId>
	<version>1.0.1-SNAPSHOT</version>
</dependency>

支持功能:

  1. 快速使用
  2. 内置的采集器