我有一个用例,需要处理一组事件。我需要他们在并行处理,整体,但按顺序为每个用户。这能在PubSub (也许是GCP任务?)中完成吗?
例如:
6事件同时出现(User_A_Event_1,User_A_Event_2,User_B_Event_1,User_B_Event_2,User_C_Event_1,User_D_Event_1)。
我想按UserID对它们进行分组,并行处理每个用户,然后按顺序处理每个事件(在成功完成之前的事件之前,后续的事件处理不会开始)。类似于:
如果它重要,我不知道什么用户将有事件,在什么时候。我们可能几个月没有看到任何事件的用户,然后开始得到他们的很多。
我正试图找到在GCP PubSub中实现这一目标的方法,但我也对其他解决方案持开放态度。我更倾向于通过推而不是拉来做这件事,因为我可以长时间排队而不用排队。
感谢你的帮助。
克雷格
发布于 2020-11-23 11:46:40
云店/分局订购交货能帮上忙。您将使用用户作为订购键。这意味着Cloud /Sub将按照发布服务器接收消息的顺序将消息传递给订阅者。在预先不知道用户集合的情况下,如果某个特定用户的事件很少或突发,则有序传递将具有您所希望的属性。
在订阅方,所作的担保取决于订阅者的类型。对于客户端库(使用流拉),您提供的回调将执行到完成,每次都使用相同的键对消息执行回调。对于使用pull的订阅者,每个拉请求都将按照接收密钥的顺序包含密钥的消息,而密钥的消息一次只在一个拉响应中未完成。对于push订阅者,订购键的每条消息将分别发送到您的端点,下一条消息将在确认相同密钥的前一条消息之前不发送。
请注意,Cloud /Sub的有序传递仍然至少有一次传递语义,这意味着可以重新传递确认的消息,这也将导致对相同密钥的后续消息的重新传递。
有关更多细节,请参见关于订购的中帖。
https://stackoverflow.com/questions/64945408
复制相似问题