Spring XD - SpEL表达式和过滤器中的逻辑运算符

时间:2017-03-25 10:54:27

标签: filter spring-xd spring-el

我想创建一个像这样的过滤器

file --outputType=text/plain --dir=someDir --mode=lines | filter --expression='payload.contains(\"request url\") AND payload.contains(\"request method\")' | log

所以,我想在控制台上看到包含request URLrequest method的行。

我根据this question

制作了这个流

不幸的是我发生了这个错误:

  

....引起:org.springframework.beans.PropertyBatchUpdateException;   嵌套的PropertyAccessExceptions(1)是:PropertyAccessException 1:   org.springframework.beans.MethodInvocationException:Property   'expressionString'抛出异常;嵌套异常是   org.springframework.expression.spel.SpelParseException:EL1065E:(pos   17):意外逃脱的角色。

编辑:我已经通过Flo

部署了流

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本?我只是尝试使用1.3.1而没有问题...

xd:>stream create foo --definition "tcp --outputType=text/plain | filter --expression='payload.contains(\"foo\") AND payload.contains(\"bar\")' | log" --deploy 

$ telnet localhost 1234
Trying ::1...
Connected to localhost.
Escape character is '^]'.
abc
foobar

结果:

2017-03-25T08:59:57-0400 1.3.1.RELEASE INFO xdbus.foo.1-1 sink.foo - foobar

修改

使用flo(管理员界面)时,请使用''代替\" ...

foo = tcp --outputType=text/plain | filter --expression='payload.contains(''foo'') AND payload.contains(''bar'')' | log