pubsub流媒体拉取vs没有确认行为

时间:2019-12-01 17:33:45

标签: google-cloud-pubsub

nack()具有以下行为

  

nack()           “”“拒绝确认给定的消息。           这将导致邮件重新发送到订阅。

现在,在进行流式提取时,我正在提取taxiride streaming data经过测试的以下行为。

与nack() 流式拉取继续接收以前被nacked()的消息

nack()或ack()都不 流式传输会读取最初的消息,并等待很长时间。我等待了将近15分钟,但没有收到任何新消息。

现在我的问题是,当消息既不是ack()也不是nack()时,在流式提取中,预期的行为和处理这些消息的正确方法是什么? 可以说是否要每分钟将积压邮件计数为处理要求?

1 个答案:

答案 0 :(得分:1)

当消息既未确认也未确认时,Cloud Pub / Sub客户端库将在消息上保留租约,直到maxAckExtensionPeriod。一旦超过该时间段,邮件将被取消并重新发送。当您既不确认也不确认时,没有收到更多消息的原因很可能是因为您遇到了flowControlSettings中指定的值,这限制了可以处理的,尚未确认或尚未确认的消息数。

通常,它既不是ack也不是nack消息的反模式。如果您成功处理了该消息,则应确认它。如果您无法处理它(例如发生某种类型的瞬时异常),则应该对其进行处理。尝试在不执行这些操作之一的情况下接收消息实际上并不是一种有效的方法来计算积压中的消息数量。