使用redis的spring-xd自定义模块部署

时间:2014-07-28 18:51:41

标签: spring-xd

我正在使用spring xd和gemfire xd,我有要求,我从其中一个节点(本地文件系统)收集数据,其中xd-admin运行。我想收集此文件并发送进行处理。以下是我的流定义。

源文件/ tmp / xd / input --ref true |处理器(messageCollector)|处理器((方程式计算)|接收器(gemfire xd)

我有3个节点spring xd和gemfire xd cluster。第一个节点(xd-admin.xd-container)和2& 3个节点xd-containers正在运行。容器已正确注册xd-admin。我配置了单个redis实例。

我的要求是,我想从文件中收集我的数据并发送进程并存储到gemfire xd。

messageCollector - >收集所有消息作为HashMap并发送到下一个处理器方程计算,这里所有记录将通过方程式并得到计算结果将发送到下一个接收器(gemfire xd)插入。

这个,我已经在单节点环境中测试并且运行良好。现在,我按照上面的解释转移到分发环境。

我应该如何在分布式环境中创建模块。我是否需要将所有模块移动到所有可用节点。

源模块将仅存在于实际文件和其余模块进入所有可用容器的位置。

这里,在方程计算器模块中,我维护文件侧面的每个记录的序列。并且应该在gemgire xd(sink)中保持相同的顺序。

由于现在它处于单节点env中,因此整个事物由单个节点处理时效果很好。

现在,我转移到分布式env,我没有容器,如上所述。如何保留我的序列直到插入。

请帮我分发环境中的模块部署。

谢谢, -Suyodha

1 个答案:

答案 0 :(得分:2)

使用deployment manifest中的criteria将文件来源定向到特定节点。使用count将处理器部署到多个节点。

但是,执行此操作后无法维护序列。如果您只有第二个处理器的1个实例,则所有内容都将通过它,但序列可能不是文件中的原始序列。