【发布时间】:2022-12-21 19:58:15
【问题描述】:
我正在尝试让 Cloud Run 或 Cloud Function 启动并提取与其定义的 ID 匹配的消息,例如,如果将属性 ID 为 1 的消息放入主题中,则 ID 为 1 的 Cloud Run 会将其取出,所有具有属性 1 的消息都发送到同一个实例,这一点很重要。
我知道我可以在订阅上使用过滤器,但我希望能够轻松更改可能的 ID 数量,例如如果我只将消息放在 ID 介于 0 和 4 之间的主题中,那么只会启动五个实例。
我将如何着手创建这样的东西? Pub/Sub 是否支持这种功能?
我知道我可以创建 X 数量的主题,然后将每条消息放入其自己的主题中,但是当存在属性系统时,这似乎是一种低效的执行方式。
【问题讨论】:
-
您不能在 Pub/Sub 中指定根据属性向哪个端点发送消息。您可能需要 CR 和 Pub/Sub 之间的服务作为“路由器”。
it's important that all messages with attribute 1 go to the same instance您将什么称为 Cloud Run 实例?你说服务?如果您实际上是指在 Cloud Run 中运行的实例,则无法将消息重定向到特定实例 -
此外,您所描述的听起来并不像您正在基于消息(如您在标题中所写)创建函数/CR 服务,而是在已创建的服务中处理它们。你能澄清一下吗?
-
啊,我可能措辞不当,我希望每个消息属性不超过一个容器。我想你是对的,我希望 Cloud Run 轮询 pub sub 并取出其中可用的任何数据。就像 AWS 的 SQS 是如何工作的。我的主要问题是当有一条消息的属性尚未分配正在运行的容器时,让云运行实例启动......
-
你找到解决办法了吗?如果是这样,您可以分享解决方案吗?
-
@RoopaM 有点,我找到了另一种适合我的情况的方法。
标签: google-cloud-platform google-cloud-functions mapreduce google-cloud-pubsub google-cloud-run