DataFlow不会调用PubSub消息

时间:2017-07-25 23:29:14

标签: google-cloud-datastore google-cloud-dataflow google-cloud-pubsub

简单的gcloud数据流管道:

PubsubIO.readStrings()。fromSubscription - >窗口 - > ParDo - > DatastoreIO.v1()。写()

当对pubsub主题应用加载时,消息被读取但未被激活

2017年7月25日下午4:20:38 org.apache.beam.sdk.io.gcp.pubsub.PubsubUnboundedSource $ PubsubReader stats INFO:Pubsub项目/ my-project / subscriptions / my-subscription有1000条收到的消息,950条当前未读消息,843346条当前未读字节,970条当前飞行时间信息,28367毫秒最早飞行,1条当前飞行中检查点,2条最大飞行检查点,最近读取770B / s,最近收到1000个,最近延长0个,最近延迟0个,最近50个确认,最近9个NACK ,0个最近过期,最近898毫秒消息时间戳偏差, 9224873061464212ms最近水印偏斜,0最近晚消息,2017-07-25T23:16:49.437Z上次报告水印

应该对消息进行哪些管道步骤?

  • stackdriver仪表板显示有一些确认,但未打包消息的数量保持稳定。
  • 跟踪中没有错误消息,表明消息处理失败。
  • 条目显示在数据存储区中

1 个答案:

答案 0 :(得分:2)

Dataflow只会在其他地方持久提交后才会确认PubSub消息。在由PubSub组成的管道中 - > ParDo - >一个或多个接收器,这可能会被任何有问题的接收器延迟(即使它们正在被重试,这将减慢速度)。这是确保结果似乎得到处理effectively-once的一部分。有关详细信息,请参阅a previous question about when Dataflow acknowledges a message

更改此行为的一个(简单)选项是在PubSub源之后和接收器之前添加GroupByKey(使用随机生成的键)。这将导致消息更早被确认,但可能会更糟,因为PubSub通常比GroupByKey更好地保留未处理的输入。