Python Googlr PubSub请求消息(即使已确认)?

Python Googlr PubSub请求消息(即使已确认)?,python,google-cloud-platform,google-cloud-pubsub,Python,Google Cloud Platform,Google Cloud Pubsub,我正在从我使用以下方式创建的订阅接收邮件: subscriber = pubsub_v1.SubscriberClient(credentials=credentials) subscriber.create_subscription(name=subscription_name,topic=topic_name, ack_deadline_seconds=60) 我正在使用此接收: subscriber = pubsub_v1.SubscriberClient() subscription_

我正在从我使用以下方式创建的订阅接收邮件:

subscriber = pubsub_v1.SubscriberClient(credentials=credentials)
subscriber.create_subscription(name=subscription_name,topic=topic_name, ack_deadline_seconds=60)
我正在使用此接收:

subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(project_id, subscription_id)
future = subscriber.subscribe(subscription_path, callback=callback())

with subscriber:
    try:
        future.result()
    except TimeoutError:
        future.cancel()

def callback(msg):
    my_logic(msg)
    msg.ack()
虽然我在回调结束时确认,但我错过了发布者发出的前600条消息(订阅已存在)。我认为没有收到,但由于日志记录减少,我无法确认。无论如何,我需要恢复这些消息

我读了这一页:

不幸的是,我的订阅没有设置
retain\u acked\u messages=true

我有两个问题:

  • 检索这些丢失消息的最简单方法是什么?我知道他们会在什么时候发生。是否可以指示服务使用时间戳重播它们

  • 我的订阅是否有任何更改,以应对未来的问题?我应该在启动时创建快照吗


  • 如果未保留已确认的消息,则无法查找PubSub订阅并重播过去的确认消息

    快照非常好,特别是对于测试(可重放性)或在生产中发布新版本之前(出现错误时回滚)


    依我看,在你的情况下,保留确认信息是很重要的。如果您的用例是重播已确认的消息,则当您有此参数时,快照不太有用。

    谢谢您的回答。我将消息存储到数据库超过一周(一周后这是一个新的系列),我需要确保不会错过任何消息。我不热衷于寻找,因为它需要知道时间段。我认为从自动化的角度来看,这可能很难实现。我认为这对手动更正很好,但需要做很多工作。我最初的感觉是,自动更正快照可能更好?用法不一样。快照是在某个时间点拍摄,查找并回放时间和消息。快照之后,所有新消息都不包括在其中。seek还考虑了新消息。所有这些都取决于您的用例。