在 Spring Cloud Dataflow 中引用属性

Posted

技术标签:

【中文标题】在 Spring Cloud Dataflow 中引用属性【英文标题】:Quoting properties in Spring Cloud Dataflow 【发布时间】:2018-07-10 00:20:50 【问题描述】:

这似乎是一个愚蠢的问题,但我们正在尝试从 SCDF shell 应用程序定义数据流,但我们遇到了引用问题。假设我们想要使用 SpEL 表达式定义一个过滤器,以过滤掉 JSON 输入中没有名称 John Doe 的任何内容。 SpEL 将是:

payload.name != 'John Doe'

payload.name ne 'John Doe'

流定义为:

stream create --name testflow --definition "http | filter --expression=<expression> | log"

我不能用单引号将 括起来,因为表达式本身包含单引号,而且我不能使用双引号,因为整个流定义都使用它们。我不能只留下引号,因为这样 shell 的解析器就会被空格和 ! 混淆。从 shell 应用程序中定义这个流是不可能的吗?可以从浏览器应用程序执行此操作,但其他数据流定义在那里存在解析问题。

【问题讨论】:

【参考方案1】:

用字符串字面量定义过滤器表达式有点棘手。我们应该用两个单引号而不是双引号将字符串文字(带空格)括起来。

stream create --name test --definition "http | filter --expression='!(payload.firstName==''Joe Robert'' and (payload.lastname==''Smith'' or payload.prod==''Williams''))' |log" 

上面只有定义用双引号括起来。 参考:https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-cloud-dataflow-stream-intro-dsl

【讨论】:

哦,我现在明白了。史密斯和威廉姆斯周围的双引号实际上是双引号。现在可以了!谢谢! 谢谢,舒巴。我们在Shell Tips & Tricks 上进行了截屏,其中涵盖了推理和其他替代方案。我也觉得分享一下可能有用。

以上是关于在 Spring Cloud Dataflow 中引用属性的主要内容,如果未能解决你的问题,请参考以下文章

需要有关如何在多个专用服务器中创建部署 spring-cloud-dataflow 应用程序以创建流的建议

Spring Cloud DataFlow 组合任务未启动

将 spring-cloud-starter-dataflow-server-local 升级到 1.3.0 时生成错误

如何使用 Stream 为 Spring Cloud Dataflow 中的子任务设置全局属性 - Task-Launcher-Dataflow

我们如何在 Spring cloud dataflow kafka binder 中为 Kafka 维护租户数据隔离?

使用 Spring Cloud DataFlow 在无限运行的应用程序中编排长时间运行的外部批处理作业是不是合适?