处理前延迟消息处理和删除

时间:2016-09-28 08:34:37

标签: google-cloud-pubsub

我需要此功能为移动应用中的操作发送推送通知,但等待用户撤消操作,直到说10秒。

是否可以将主题中发布的消息的处理延迟10秒?然后(有时,如果用户撤消)在10秒之前删除该消息,如果它不需要处理?

2 个答案:

答案 0 :(得分:14)

取决于你是否也写了订阅者:

您可以控制订阅者代码:

  1. 在您的Pubsub消息中添加时间戳,以便在需要时添加 要处理的消息。
  2. 在您的客户(订阅者)中,有逻辑 仅在处理消息的时间戳时确认消息 到达了。
  3. Pubsub本身将重新尝试发送消息,直到 它被承认(或10天)
  4. 如果您无法控制订阅者,则可以使用我的主题和延迟主题。人们可以发布到前一个主题,该主题将只有一个您将实现的订阅者:

    1. 以前的公共信息给我的主题。
    2. 将拥有该主题的订阅者,该订阅者可以执行与上述相同的限制:
    3. 如果该邮件的时间已到达您的处理程序,则会将该邮件发布/转发给my-delayed-topic。
    4. 您还可以使用task-queue + pubsub-topic而不是pubsub-topic + pubsub-topic来实现上述逻辑。

答案 1 :(得分:1)

只是想分享一下,我注意到发布/订阅支持重试策略1,即截至2020-06-16 2的GA。

如果确认截止时间到期或订户以否定确认响应,则发布/订阅可以使用指数补偿再次发送消息。

如果未设置重试策略,则在确认截止时间到期或订户以否定确认响应后,发布/订阅将重新发送消息。

如果设置了最大退避时间,则默认的最小退避时间为10秒。如果设置了最小退避时间,则默认的最大退避时间为600秒。

您可以指定的最长退避时间为600秒。