带过滤器的Spring-xd水龙头?

时间:2015-05-19 18:30:12

标签: spring-xd

我有一个不同类型文本记录的流“myStream”,比如“A”,“B”,“C”等......每种类型的记录都需要以不同的方式处理。我想在“myStream”上为每种类型创建多个点击:tapA,tapB,tapC等。但似乎tap没有任何过滤功能。这是真的还是我错过了什么?有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

您可以在点按流上进行过滤。您可以将tap视为具有源频道(点按频道)设置的常规流,此源频道可与多个处理器和单个下沉。

见这个例子:

xd:>stream create test --definition "http | log" --deploy

xd:>http post --data test

xd:>stream create tap-test --definition "tap:stream:test.http > filter --expression=payload.contains('a') | log" --deploy

xd:>http post --data test
xd:>http post --data apple

在容器日志中你会看到如下内容:

2015-05-19 11:48:36,276 1.2.0.SNAP  INFO pool-16-thread-11 sink.test - test
2015-05-19 11:48:41,445 1.2.0.SNAP  INFO pool-16-thread-17 sink.test - apple
2015-05-19 11:48:41,445 1.2.0.SNAP  INFO xd.localbus-2 sink.tap-test - apple

请注意有效负载' apple'来自常规和点击流。