2015-05-19 100 views
1

我有一個不同類型文本記錄的流「myStream」,比如說「A」,「B」,「C」等......每種類型的記錄需要不同的處理。我想爲每種類型的「myStream」創建多個tap:tapA,tapB,tapC等。但似乎tap沒有任何過濾功能。這是真的還是我錯過了什麼?有沒有更好的方法來完成這一點?帶過濾器的Spring-xd水龍頭?

回答

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 

注意有效載荷「蘋果」出來的規律和水龍頭流。

+0

謝謝!現在它適用於我。我的困惑是,我用「tap:stream:test | filter ...」代替「tap:stream:test> filter ...」 –

+0

哦。任何時候你使用命名通道(tap:,queue:etc.),那麼你就可以使用這個尖括號'>'符號。 –

+0

有趣的是,我沒有得到相同的結果 2016-05-02T14:46:55 + 0300 1.3.1.RELEASE INFO pool-81-thread-12 sink.test - test 2016-05-02T14: 47:02 + 0300 1.3.1.RELEASE INFO pool-81-thread-4 sink.test - apple ' – nurgasemetey