0

簡單gcloud數據流管道:數據流不ACKING PubSub的消息

PubsubIO.readStrings()fromSubscription - >窗口 - >帕爾 - > DatastoreIO.v1()寫()

當負載被施加到。 PubSub的話題,消息讀取而不能ACKED

2017年7月25日下午4點20分38秒org.apache.beam.sdk.io.gcp.pubsub.PubsubUnboundedSource $ PubsubReader統計 信息:發佈訂閱項目/我的項目/訂閱/我的訂閱有1000收到消息,950當前未讀的混亂年齡,843346當前未讀字節數,970當前正在傳輸的消息數,28367毫秒最早在機航班,1個當前機上檢查點,2個最多空中檢查點,770B /秒近期閱讀數,1000個最近收到的,0個最近擴展的,0個最近的後期擴展,50最近被ACK,990最近NACK的,0最近過期,898ms最近的消息時間戳歪斜,9224873061464212ms最近水印歪斜,0最近後期的消息,2017-07-25T23:16:49.437Z上次報告的水印

什麼管道步驟應該消息?

  • stackdriver儀表板顯示有一些ack,但未發送的消息數保持穩定。
  • 跟蹤中沒有指示消息處理失敗的錯誤消息。
  • 條目在數據存儲
+0

你在用什麼跑步者?你有沒有從你運行的管道上找到工作ID? –

+0

我一直在使用數據流管理的服務運行器,它給了我一個工作ID以及我本地的開發人員。順便說一句,我正在使用java sdk 2。 – jean

+0

我偶爾看到RPC超時DEADLINE_EXCEEDED消息,並嘗試使用更大的機器和更多的工人,建議您在此處: https://cloud.google.com/dataflow/pipelines/troubleshooting-your-pipeline#rpc-timed-out-例外的DEADLINE_EXCEEDED的例外 - 或 - 服務器響應,錯誤 作業NUMER:2017-07-27_11_40_13-16176649068898383100 @BenChambers – jean

回答

0

數據流顯示只會承認PubSub的消息後,他們都致力於持久別的地方。在由PubSub - > ParDo - > 1個或更多接收器組成的管道中,任何有問題的接收器都可能會延遲(即使它們正在重試,這會減慢速度)。這是確保結果似乎被處理的一部分effectively-once。有關更多詳細信息,請參閱a previous question about when Dataflow acknowledges a message

更改此行爲的一個(簡單)選項是在PubSub源之後和接收器之前添加GroupByKey(使用隨機生成的密鑰)。這將導致消息被提前確認,但可能會變差,因爲PubSub通常比未提供未處理的輸入更好,而不是GroupByKey。

相關問題