Google cloud platform 谷歌云功能可以';不要使用Pub/Sub死信主题

Google cloud platform 谷歌云功能可以';不要使用Pub/Sub死信主题,google-cloud-platform,google-cloud-functions,google-cloud-pubsub,Google Cloud Platform,Google Cloud Functions,Google Cloud Pubsub,GCP云函数似乎总是在调用时确认Pubsub推送消息,即使函数崩溃或失败 这可以防止使用新的发布/订阅“死信”主题功能,该功能要求在将消息转发到其他主题之前消息传递失败。 目前,消息从未失败 有没有办法利用“死信主题”或pubsub重新交付云功能? 除了在函数本身上设置“重试”标志外,这并不能解决这个问题 推送订阅需要两件事: 在--trigger http模式下创建函数 创建使用云函数URL的推送订阅 这里您已经在--trigger topic模式下创建了一个函数,它是一个后台函数 你有

GCP云函数似乎总是在调用时确认Pubsub推送消息,即使函数崩溃或失败

这可以防止使用新的发布/订阅“死信”主题功能,该功能要求在将消息转发到其他主题之前消息传递失败。 目前,消息从未失败

有没有办法利用“死信主题”或pubsub重新交付云功能?
除了在函数本身上设置“重试”标志外,这并不能解决这个问题

推送订阅需要两件事:

  • 在--trigger http模式下创建函数
  • 创建使用云函数URL的推送订阅
这里您已经在--trigger topic模式下创建了一个函数,它是一个后台函数

你有


如果您需要更多帮助,请共享您的代码。

处理此问题的一种方法(直到GCP开始支持云功能的手动确认)是重新排队到同一主题,重试次数在失败时增加。您可以将重试计数存储在有效负载中,如下所示:

{
  "retry_count": 1,
  "data": {...}
}
此外,为了避免错误消息被永久重试,您可以将其配置为在重试尝试>x时推送到死信


这只解决了topi只有一个订户的问题。

您的意思是您有推送订阅?如果崩溃,函数错误代码为400、500或为空?是@guillaumeblaquiere,云函数注册为推送订阅(谷歌在将函数触发器设置为pubsub主题时定义)。我相信错误代码是500,但由于它是一个带有pubsub触发器的“后台”类型func,因此错误不是从函数本身定义和返回的,而是从google调用包装器(与用户控制返回代码的http类型函数相反)返回的。使用--trigger主题模式创建的后台函数仍然是推送订阅。查看pubsub主题,我们可以看到为函数创建了订户。此外,为函数设置重试行为是-不是-pubsub重新传输,并且不允许使用pubsub“死信”主题。您是对的-死信和重新传输与HTTP类型的函数一起工作。但它不支持后台类型的函数。以这种方式实现时,也可以保持消息中的原始数据完整,但仍然可以使用属性添加重试次数-