Spring-xd 带过滤器的水龙头?
Spring-xd tap with filter?
我有一个不同类型的文本记录流 "myStream",例如 "A"、"B"、"C" 等等...每种类型的记录需要区别对待。我想在 "myStream" 上为每种类型创建多个 tap:tapA、tapB、tapC 等。但似乎 tap 没有任何过滤功能。那是真的还是我错过了什么?有没有更好的方法来完成这个?
您可以对点击流进行过滤。您可以将 tap 视为具有 source channel(tap 频道)设置的常规流,并且此源频道可以与 multiple 处理器和 单沉.
看这个例子:
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' 来自常规和点击流。
我有一个不同类型的文本记录流 "myStream",例如 "A"、"B"、"C" 等等...每种类型的记录需要区别对待。我想在 "myStream" 上为每种类型创建多个 tap:tapA、tapB、tapC 等。但似乎 tap 没有任何过滤功能。那是真的还是我错过了什么?有没有更好的方法来完成这个?
您可以对点击流进行过滤。您可以将 tap 视为具有 source channel(tap 频道)设置的常规流,并且此源频道可以与 multiple 处理器和 单沉.
看这个例子:
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' 来自常规和点击流。