首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PubSub死字

PubSub死字
EN

Stack Overflow用户
提问于 2020-06-12 05:54:58
回答 3查看 1.3K关注 0票数 2

我正在尝试将云函数pubsub订阅转发到一个死信主题,如下所述:https://cloud.google.com/pubsub/docs/dead-letter-topics#gcloud

我试过了

代码语言:javascript
复制
$ gcloud pubsub subscriptions update gcf-worker-topic --dead-letter-topic=gcf-worker-dead-letter-topic

并尝试在控制台中修改gcf-worker-topic订阅。两者都给了我相同的错误:

代码语言:javascript
复制
ERROR: (gcloud.pubsub.subscriptions.update) INVALID_ARGUMENT: The supplied AppEngine URL project does not match the subscription's parent project

目标是在云函数崩溃时将消息转发到死信队列。

我做错了什么?这不受支持吗?是否有未来支持的计划?

EN

回答 3

Stack Overflow用户

发布于 2020-06-12 17:42:22

当您将Cloud Function直接插入到一个主题时,会使用一个奇怪的端点创建一个自动推送订阅:

代码语言:javascript
复制
https://d4d1290519676f29baf13a7bf18a25bf-dot-jea3ef1cff72566d8-tp.appspot.com/_ah/push-handlers/pubsub/projects/PROJECT_ID/topics/test-topic?pubsub_trigger=true

您可以看到这个URL在appspot.com中,这是典型的App Engine。因此,直接插入到PubSub云函数生成了一个在外部/谷歌项目中使用AppEngine的奇怪的黑客攻击。你无法更新它。

解决方法是在HTTP触发模式下更改您的云函数,并在其上创建PubSub推送订阅。但是,要小心,因为PubSub消息格式并不完全相同

支持推送订阅的

代码语言:javascript
复制
   {
     "message": {
       "attributes": {
         "key": "value"
       },
       "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
       "messageId": "136969346945"
     },
     "subscription": "projects/myproject/subscriptions/mysubscription"
   }

直接链接云函数的

票数 3
EN

Stack Overflow用户

发布于 2020-06-12 08:02:53

您可能还需要--dead-letter-topic-project。请参阅dosumentation

票数 0
EN

Stack Overflow用户

发布于 2020-06-12 17:13:54

我相信您正在更新主题(gcf-worker- topic id ),而不是subscription id

在订阅中定义了dead-letter-topic。尝试创建新订阅:

代码语言:javascript
复制
gcloud pubsub subscriptions create subscription-id \
  --topic=gcf-worker-topic \
  --dead-letter-topic=gcf-worker-dead-letter-topic \
  --max-delivery-attempts=max-delivery-attempts \
  [--dead-letter-topic-project=dead-letter-topic-project]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62334198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档