在Spring Cloud数据流中部署脚本化转换时出错:ParserException

时间:2018-07-14 02:22:29

标签: spring-cloud-dataflow

我正在尝试使用基于kafka的脚本化转换在Spring Cloud数据流中构建流。我按照这里的指示进行操作:
https://docs.spring.io/spring-cloud-stream-app-starters/docs/Celsius.SR2/reference/htmlsingle/#spring-cloud-stream-modules-scriptable-transform

我的流定义如下:

:SCDF_SORUCE > scriptable-transformer --language=ruby --script="return ""#{payload} extended"";" > :SCDF_DESTINATION

“ scriptable-transformer”应用已向以下uri注册:
maven://org.springframework.cloud.stream.app:scriptable‑transform‑processor‑kafka:2.0.0.RELEASE

当我尝试部署流时,在队长日志中看到以下错误:

org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
 in 'reader', line 13, column 5:
    "spring.metrics.export.triggers. ... 
    ^
expected <block end>, but found Scalar
 in 'reader', line 18, column 40:
     ... riptable-transformer.script": ""return ""#{payload} extended"";""
                                         ^
    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:569) ~[snakeyaml-1.17.jar!/:na]

我也尝试使用js和python脚本,但是得到了相似的结果。

如何解决此错误?

以下是所使用的scdf版本的简短摘要:
-scdf本地服务器:1.5.2.RELEASE
-船长服务器:1.0.7.RELEASE

1 个答案:

答案 0 :(得分:0)

我相信您指的是scriptable-transform(不是scriptable-transformER)应用? 无论如何,我已经尝试过了,并且可以在Skipper模式下使用相同的转换表达式时确认问题(表达式的工作方式与经典模式一样)。

但是,如果您将双引号替换为单引号,我相信它将解决此问题。以下管道与Skfka,Skipper一起对我来说效果很好:

time | scriptable-transform --scriptable-transformer.language=ruby --scriptable-transformer.script="return '#{payload} extended';" | log

我将进行进一步调查,以确定这是文档还是代码问题。同时,您是否可以尝试上述解决方法,让我知道它是否可以解决问题?

谢谢