谷歌云引擎: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 客户端与谷歌云功能不兼容
如何通过 terraform 使用服务帐户创建谷歌云 pubsub 订阅?