问题标签 [google-cloud-pubsub]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
835 浏览

php - 在 google pubsub 中设置 gmail 的发布权限,权限被拒绝

我正在尝试将 gmail 的发布权限设置为谷歌云中的 pubsub 主题。我实现此代码的应用程序正在 AWS 中运行。这是一个 PHP 应用程序,我使用的是 2.0.0-RC7 版本的 google PHP api 客户端。

在代码中,我按照文档中的描述实现了流程:

  • 创建主题(作品)
  • 创建订阅(作品)
  • 授予 gmail 的发布权限(我在这里卡住了)

前两个操作是使用相同的 google 客户端实例完成的,该实例使用服务帐户凭据进行身份验证。

编码:

结果总是:

有人可以告诉我我做错了什么吗?一直手动设置这些权限真的很烦人。

谢谢。

0 投票
1 回答
800 浏览

php - PubSub 和 gRPC PHP 的速度

我们正在尝试将 PubSub 作为作业队列,并从 Google Cloud 中的实例运行我们的实验。

我们目前面临的问题是在 PubSub 中建立连接和创建作业大约需要 300ms-700ms。我们正在运行 PHP,因此不幸的是,对于每个传入的请求,都需要建立到 PubSub 的新连接(至少对于面向前端的代码而言)。这是 PubSub 服务的预期速度,还是我们可能做错了什么?

另一个问题是关于 PubSub 的 gRPC,这看起来很有希望,但我似乎找不到任何文档或示例代码来开始在 PHP 环境中进行试验。我发现的唯一示例似乎适用于 AppEngine,它使用的类似乎在 AppEngine 之外不可用。

我希望在这两种情况下,我都遗漏了一些东西,我真的很想使用 PubSub。

更新:我通过在客户端设置缓存部分解决了这个问题。但是还是200ms-500ms

0 投票
2 回答
920 浏览

google-cloud-pubsub - 如何将消息标记为“进行中”,以便其他工作人员不处理它

我正在尝试使用拉取队列来创建图像处理任务队列,这些任务可能需要比 10 分钟的 acktimeout 限制更长的时间。我正在使用 node.js api,我想知道如何让工作人员从拉取队列中抓取一条消息,将其标记为正在进行中,这样其他工作人员就不会尝试抓取它,完成它的工作并在之后确认消息处理完成。此处理可能需要每个工人一个小时。如果发生异常,我想删除“进行中”状态并允许其他工作人员获取此消息并尝试处理它。

我希望 pubsub 中有一些东西可以让我这样做。我的替代方法是,在处理之前,将带有消息 id、ack id、status=pending、timestamp=now() 的实体(inProgressMessage)存储到数据存储中,让工作人员在收到消息后立即返回 ackid(这将允许其他工作人员尝试其他消息),然后工作人员可以处理冗长的任务。如果成功,将实体状态标记为完成,如果以非永久方式失败,将任务重新排队到 pubsub,如果以不允许重新排队的永久方式失败,我可以让 cron 检查数据存储中是否存在比几个旧的待处理任务小时并让它们被删除或重新排队。

我的替代方案感觉就像我正在重新实现 pub sub 应该帮助的很多内容。

如果您能想到更好的方法,请告诉我。

0 投票
1 回答
1007 浏览

google-cloud-dataflow - 在 Cloud DataFlow 中访问 Cloud Pub/Sub Message 属性

根据我对 DataFlow 的阅读,Pub/Sub 数据源仅提供消息正文以在管道中使用。我们有一个用例,我们想要检查消息的属性以做出某些决定。目前有没有办法实现这一目标?如果需要,我愿意扩展 Pub/Sub I/O 以合并它。

0 投票
1 回答
439 浏览

google-app-engine - 如何从 google pubsub 推送到在 google app 引擎上运行的 servlet?

我正在尝试配置 google pubsub 以将消息推送到在 google 应用程序引擎上运行的 servlet。

我能够发布到该主题。我知道这是有效的,因为我可以使用 gcloud 通过拉取订阅进行检索:

我还可以从我的 Web 浏览器调用应用程序引擎上的 servlet。但出于某种原因,我似乎无法说服 pubsub 在应该调用 servlet 时调用它。

我相信我已经正确配置了 servlet。
这是我的 web.xml 文件的相关部分:

我在调试时遇到了困难,因为我似乎无法访问任何可能指示错误来源的日志记录数据。消息只是消失在以太中。

pubsub 主题和订阅与应用引擎实例位于同一个项目中。

“订阅者指南”中让我有点困惑的一件事是这样的声明:

目前唯一受支持的端点是可以接受 Webhook 传递的 HTTPS 服务器。

我不确定“Webhook 交付”到底是什么意思。

0 投票
0 回答
269 浏览

google-cloud-platform - Pubsub 订阅收到未知主机异常

我已经实现了订阅特定主题的 pubsub poller,然后安排在指定间隔轮询新消息的任务。

我看到它偶尔会收到 UnknownHostException 导致没有收到任何消息 -

0 投票
1 回答
377 浏览

google-cloud-pubsub - 使用来自 IoT 设备的 curl 发布到主题时出错(google pub/sub)

我有一组运行 openwrt linux 的嵌入式设备,这些设备每 3 分钟使用 POST 向 URL 发送数据(json)。随着设备数量的增加,我想在对数据进行流式分析之前使用 google pub/sub 服务来处理该数据

但是每次我尝试向该主题发布一些内容时,我都会收到此错误:

我创建了一个服务帐户并尝试在 url 末尾附加 id-key,但结果仍然相同。我应该怎么办?谢谢

0 投票
2 回答
1444 浏览

json - 使用 Go 解组 PubSub 请求数据 []bytes

我有一个从 Google PubSub 请求接收数据的端点。根据这个 repo,对象是这样的:

数据字段的格式一致,如下所示:

我可以明显地用这样的方式解组 JSON 请求:

剩下的 []bytes 字段。根据文档,我可以做这样的事情来转换为字符串

这没有帮助,因为我需要它作为一个结构。

我可以再次解组数组:

尝试将 pushRequest 结构中的字段类型更改为 Data 但没有成功。空白的...

有没有一种方法可以一次性打开包装?做两次似乎很荒谬。

如果很明显,我就是看不到!

0 投票
2 回答
595 浏览

google-cloud-platform - 可以订阅的 PubSub 主题数量是否有限制?

我创建了一个包含约 30 个管道的数据流,所有这些管道都在 PubSub 上订阅了自己的主题。当我尝试启动时,随机订阅总是失败。但是,如果我在多个数据流之间拆分管道,则所有订阅都会成功。

单个数据流可以包含的主题数量或可以发出的并发订阅请求数量是否有限制?

失败的工作:2016-06-03_07_27_29-2535656819775551181

成功者之一:2016-06-03_07_37_20-7740562448710226511

0 投票
5 回答
29963 浏览

python - Cloud Pub/Sub Demo : 403 用户无权执行此操作。尝试推送通知时

我正在学习 Google Cloud Pub/Sub 并遵循这个官方文档:Writing and Responding to Pub/Sub Messages - Python

当我将它部署到云端并尝试提交消息时, 在此处输入图像描述 我收到以下错误:

发生内部错误:403 用户无权执行此操作。(发布https://pubsub.googleapis.com/v1/projects/your-project-id/topics/your-topic:publish)查看完整堆栈跟踪的日志。

我想这是由于一些身份验证问题?任何帮助,将不胜感激。