即使函数崩溃或失败,似乎GCP Cloud Functions始终在调用时确认ACK Pubsub PUSH消息。
这会阻止使用新的发布/订阅“死信”主题功能,该功能要求消息传递失败后才能将其转发到另一个主题。 目前,消息永远不会失败。
是否可以通过Cloud Functions利用“死信主题”或pubsub重新交付? 除了在函数本身上设置“重试”标志之外,这不能解决此问题。
答案 0 :(得分:1)
推送订阅意味着两件事:
您在--trigger-topic模式下创建了一个函数,它是一个后台函数。
您有here what you have to do for marking the function as failed。
如果需要更多帮助,请共享您的代码
答案 1 :(得分:0)
可以解决此问题的一种方法(直到GCP开始支持云功能的手动确认)是通过重新排队进入同一主题,并在失败的情况下增加重试次数。您可以将重试计数存储在有效负载本身中,例如:
{
"retry_count": 1,
"data": {...}
}
此外,为避免错误消息被永久重试,您可以将其配置为如果尝试重试> x,则将其推送到死信。
这仅在topi只有一个订户的情况下解决了问题。