使用Gradle注册SpringXD的module

17 5月

SpringXD是Pivotal的大数据产品,提供了一个抽象的数据处理平台。

SpringXD将数据解决方案抽象为数据吸纳,分析,流调度和输出四大块。

作为源头的数据吸纳可以从各种数据源中获取需要的数据,基于Spring的另外一个项目spring-integration,这一部分的大部分实现都可以使用简单的dsl实现。

在SpringXD中每一个部分的组件都可以自己编写并注册到服务中,方便之后的使用。

但是在编写阶段每次都需要打包,上传服务器,然后注册,整个过程还是有点繁琐的。

Gradle作为一个构建工具,自然可以通过自定义任务完成这个任务。

微博数据吸纳

这里以微博的数据源为例。

微博的数据源因为新浪微博提供了sdk,所以自己编写稍微方便一些。

SpringXD项目默认也提供了twitter的两个source方便测试。

先看一下build.gradle的配置


最关键的配置变量是moduleType,moduleName和xdServer。

为了简单明了,WeiboSource并不具有配置参数(一般情况下都需要提供一些配置参数的,比如apiKey),主配置文件如下


因为打包后配置需要也在jar中,在jar配置中增加


注册到SpringXD

SpringXD提供了一套Restful的api用于常用的操作,比如stream的管理,容器状态等。

xd shell也是调用了这个接口,也有java的实现。

在build.gradle中加入


新定义一个任务reg


然后执行gradlew reg即可注册成功。

注册成功

注册成功后就可以正常使用了

创建新的stream
stream输出

当然管理界面也可以看到相关信息

管理界面

其他问题

  • 这种注册方式是强制的,也就是说如果有同名source就会被覆盖。

  • 因为Module的类型是通过RESTModuleType.valueOf(moduleType)获取的,所以也可以这样注册sink等其他类型的模块。

  • 如果有对应的module正在被使用,那么是没法重新注册的。

发表评论

电子邮件地址不会被公开。