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

Spring XD - Logical operators in SpEL expression and filters

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

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

所以,我想在控制台上可视化包含 request URLrequest method 的行。

我根据

制作了这个流

不幸的是我遇到了这个错误:

.... Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'expressionString' threw exception; nested exception is org.springframework.expression.spel.SpelParseException: EL1065E:(pos 17): unexpected escape character.

编辑: 我已经通过 Flo

部署了流

您使用的是什么版本?我刚刚在 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 (admin UI) 时,请使用 '' 而不是 \" ...

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