场景:spring xd中的一个流定义具有以下结构:
jms |过滤器|变换| HDFS
在过滤器模块中,我向数据库发出查询,以验证当前消息是否适用于进一步处理。
当条件满足时,消息传递到转换模块。
在转换模块中,我想访问过滤模块的查询结果。
目前,我最终不得不在转换内部再次触发查询才能访问相同的结果集。
是否有任何形式的全局变量可以在跨不同模块从源传递到接收器的消息生命周期内应用?这有助于减少从数据库读取的延迟。
如果这不可能,推荐的替代方案是什么?
最佳答案
您通常会使用转换器或 header 丰富器来设置带有查询结果的消息 header ;在过滤器中使用该 header ,该 header 将可用于下游模块,包括您的变压器。
<int:chain input-channel="input" output-channel="output">
<int:header-enricher..../>
<int:filter ... />
</int:chain>
此(传递任意 header )目前仅适用于(开箱即用)兔子(和本地)传输,或者启用了直接绑定(bind)。
使用 redis 传输时,您必须配置总线以将 header 添加到它传递的 header 中。
关于spring-xd - spring xd 中流中的全局变量有什么概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948347/