谷歌云引擎:PubSub 而不是 RabbitMQ

Posted

技术标签:

【中文标题】谷歌云引擎:PubSub 而不是 RabbitMQ【英文标题】:Google Cloud Engine: PubSub instead of RabbitMQ 【发布时间】:2018-02-09 05:25:42 【问题描述】:

我的项目具有在 Google Cloud 中运行的微服务器架构。我正在考虑从使用 RabbitMQ 的容器转移到 PubSub 引擎。

问题是:可以一条一条接收消息吗?我的代码是用 Go 编写的,docs 说

回调被多个 goroutines 并发调用, 最大化吞吐量。

但是可以调用多少个 goroutine?如何设置允许的最大值?例如。我的一名工作人员使用第三方 API,每个 IP 只允许一个连接,因此我只能及时为该工作人员执行一项任务。

【问题讨论】:

这个问题可能会因为离题而被关闭。该站点是关于特定于代码的问题,而不是架构/技术决策。核心思想是从主题中拉下 1 条消息,回调应用到该消息。那个电话看起来像go callback(msg)。同时,另一条消息可能可用,为什么要等待回调返回?您可以通过在回调中添加互斥锁来强制执行此操作,并且每次都获得一个锁,但这很愚蠢 是的,就是这样。但这不是架构决定。问题是 PubSub 是如何真正工作的,因为文档中并不清楚。 【参考方案1】:

正确的解决方案是 App Engine 任务拉取队列

https://cloud.google.com/appengine/docs/standard/go/taskqueue/overview-pull

【讨论】:

以上是关于谷歌云引擎:PubSub 而不是 RabbitMQ的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云 pubsub node.js 客户端与谷歌云功能不兼容

使用 pubsub 等谷歌云指标自动缩放 pod

如何通过 terraform 使用服务帐户创建谷歌云 pubsub 订阅?

Neo4j 在谷歌云 pubsub 订阅中写入事务恐慌

通过 mosquitto 代理发布到谷歌云中的不同 pubsub 主题?

如何将 pubsub 日志接收器创建到不同的谷歌云项目/组织?