2017-03-31 102 views
1

我目前使用kafka流來整理窗口內的相關事件。如果所有相關事件都沒有到達窗口內,卡夫卡流中是否有方法可以處理已過期的事件。這將有助於處理/通知下游應用程序所有相關事件未到達整理。感謝您的迴應。
以下是在示例
例-1:
- 的GroupID:G1
- 事件到來:E1,10am; E2 10:01 am和E3 10:02 am
- 窗口:不活動持續時間爲5分鐘的會話窗口。
- 結果:所有事件均已成功整理。Kafka Streams:處理窗口過期流中的事件老化

實例-2:
- 活動到達:E1,10am; E2上午10:01和E3不到達
- 窗口:不活動持續時間爲5分鐘的會話窗口。
- 結果:觸發一個動作或通過用於在窗口屆滿E1和E2部分 歸類的聽衆得到通知,在上午10時06

+0

這個問題有點不清楚。您是否問過「卡夫卡流中有沒有辦法處理已過期的事件?」 – Nathan

+0

是的,有沒有辦法獲得窗口開啓事件的處理。 – vinay

回答

1

的Windows卡夫卡流「不會過期」,但保持開放,允許處理遲到數據。

比較How to send final kafka-streams aggregation result of a time windowed KTable?

這是不可能註冊任何回調,

  • 不是的情況下「流時間」的進展,並通過「窗口結束時間」
  • 沒有爲案件如果最後下降的窗口(即保留期限過去了)
+0

感謝馬特的迴應。是否有另一種方式通過Kafka Streaming庫或者通過交互式查詢在下列情況下識別事件:a)當窗口被丟棄時b)當窗口時間過去時。 – vinay

+0

你可以使用一個虛擬'transformValues'來轉發它的輸入數據並註冊一個標點符號 - 標點符號是基於內部跟蹤的「流時間」,因此你可以計算出時間是否超過了窗口結束時間 - 如果你考慮保留時間,你也可以計算出Windows何時最終被丟棄。因此,你可以像這樣通過IQ間接訪問當前窗口內容 - 但這很不方便,也不是100%準確。 –

+0

@kaf在Kafka中的窗口當窗口的「過期」/定義「直到」時間過去並且狀態存儲最終放棄窗口時,流確實會過期。所以窗口不過期的概念是錯誤的。從所有SO問題和論壇主題詢問這個問題,我很清楚這是一個疏忽和缺失的功能。數據並沒有永遠在會話商店中生存,我們想知道它的價值是什麼以及何時到期。 – akizl