跨多个云功能分发1个Pub/Sub主题消息,而不重复



我有8个云函数是由Pub/Sub主题触发的。

例子的问题:当16条消息发布到Pub/Sub主题时,所有8个函数都被触发,每个函数都接收所有16条消息。

期望结果:当16条消息发布到Pub/Sub主题时,所有8个函数都被触发,每个函数应该只接收到2个消息。

有办法解决这个问题吗?

我尝试:设置1发布/订阅主题,1发布/订阅订阅,从1订阅触发8个函数,但在yaml文档和云控制台中,似乎我只能从主题触发一个函数,而不是现有的订阅。

可能但不理想的解决方案:负载平衡(示例)跨8个不同的发布/订阅主题的16条消息,然后每个函数由1/8个主题触发(每个主题2条消息)。

拥有8个独立的云函数是一种反模式,您希望在这些函数上对消息进行负载平衡。如果每个代码都是相同的,那么你应该只有一个Cloud Function,并让它的自动缩放行为来处理传入消息所需的实例。

如果8个函数有不同的代码,那么您希望每个函数只处理消息的一个子集是违反直觉的,除非您希望基于消息本身的某些属性将它们路由到函数,在这种情况下,您将希望设置8个使用过滤器的订阅。

如果你所寻求的行为确实是你所需要的,那么你可能需要在两者之间放置一个单独的云函数,接收所有消息并将其分发给其他云函数,而不是使用Pub/Sub作为触发器,使用HTTP请求。然后,您可以从接收Pub/Sub消息的单个函数发出HTTP请求,并根据需要将它们分发到其他8个函数。

最新更新