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