Google发布订阅,接收重试策略

vwkv1x7d  于 2023-02-10  发布在  Go
关注(0)|答案(1)|浏览(191)

我是新手在使用谷歌pubsub,请原谅我的无知。我用围棋语言我们是一家公司的客户谁使用pubsub谁是发布通知的意思,我们不拥有pubsub订阅只是消费者,拥有pubsub的公司将每小时推送100条消息,并且我们需要不断地寻找消息。我有下面的示例代码获取消息这是在后台运行

func PullMyMessages() {
   ctx := context.Background()
   client, _ := pubsub.NewClient(ctx, "myAPI", option.WithCredentialsFile("abc.json"))
   sub := client.Subscription("Mysub")
   msgSlice := make(chan *pubsub.Message, 1)
   cctx, cancel := context.WithCancel(context.TODO())
   go sub.Receive(cctx, func(ctx context.Context, m *pubsub.Message) {
      msgSlice <- m
   })
   for {
      select {
      case res := <-msgSlice:
         fmt.Printf("Got message: %q\n", string(res.Data))
         res.Ack()

      case <-time.After(5 * time.minute):
         cancel()
      }
   }
}

有了上面的代码,我能够获得订阅的消息,当没有订阅分钟,我会退出应用程序.问题
1.参考:https://cloud.google.com/pubsub/docs/handling-failures#pubsub_dead_letter_delivery_attempt-go,因为我是订阅的唯一消费者/订阅者,所以可以为无法处理的消息设置重试策略集。任何示例代码或指针都将对此有所帮助
1.目前,我希望这个应用程序是在后台运行,当它没有得到任何消息5分钟,它会退出。是正确的理解?
我会真实的删除持续运行的时间因素,但希望重试机制到位

pieyvz9o

pieyvz9o1#

在PubSub上有几件事要知道。

  • 如果您不是订阅的所有者(或在列表中未被授权更新),则无法更改重试策略
  • 在订阅中,消息会保留一段时间(默认为7天,但也可以是10到30天)。这意味着,如果您有一段时间没有收听订阅,消息不会丢失,而是堆积在订阅中,当您的订阅者上线时,您会收到它们。
  • 您可以运行已经订阅(删除计时器的情况),但您也可以想象批量处理消息(例如,每10分钟收听订阅5分钟)。这样,您可以利用无服务器服务,保存资源,金钱和二氧化碳!这取决于您的用例和实时性要求。

相关问题