2

场景:spring xd中的一个流定义,结构如下:

杰姆斯 | 过滤器 | 变换 | 高清晰度电视

在过滤器模块中,我向数据库发起查询以验证当前消息是否适用于进一步处理。

当满足条件时,消息传递到转换模块。

在转换模块中,我想访问过滤器模块的查询结果。

目前,我最终不得不在转换中再次触发查询以访问相同的结果集。

是否有任何形式的全局变量可以在消息从源到接收器跨不同模块传递的生命周期内应用?这有助于减少从数据库读取的延迟。

如果这是不可能的,那么推荐的替代方案是什么?

4

1 回答 1

2

您通常会为此使用转换器或标头丰富器,以设置带有查询结果的消息标头;在过滤器中使用该标头,该标头将可用于下游模块,包括您的变压器。

<int:chain input-channel="input" output-channel="output">
    <int:header-enricher..../>
    <int:filter ... />
</int:chain>

这(传递任意标头)目前仅适用于(开箱即用)rabbit(和本地)传输,或者启用直接绑定。

使用 redis 传输时,您必须配置总线以将您的标头添加到它通过的那些。

于 2014-07-25T12:56:37.637 回答