【问题标题】:Does Google Cloud (GCP) Pub/Sub supports feature similar to ConsumerGroups as in KafkaGoogle Cloud (GCP) Pub/Sub 是否支持类似于 Kafka 中的 ConsumerGroups 的功能
【发布时间】:2019-11-14 17:37:52
【问题描述】:

尝试在 Google Cloud (GCP) Pub/Sub 与 Manager Kafka Service 之间做出决定。

在最新更新中,Pub/Sub 增加了对重播之前处理过的消息的支持,这是一个受欢迎的变化。

我在他们的文档中找不到的一个特性是我们是否可以拥有类似于 Kafka 的消费者组的东西,即拥有一组订阅者并且每个都处理来自同一主题的数据,并且能够重新处理来自一些订阅者(消费者组)开始,而其他人不受它的影响。 例如:

假设您有一个主题为 StockTicks

你有两个消费群体

CG1:有两个消费者
CG2:与另外两个消费者

在 Kafka 中,我可以在这些组之间独立读取消息,但我可以对 Pub/Sub 做同样的事情吗?

而且 Kafka 允许您从头开始重播消息,我可以对 Pub/Sub 做同样的事情吗?如果我不能重播在创建 CG 之前发布的消息,我可以,但是我可以重播那些在创建 CG/订阅者之后提交?

【问题讨论】:

    标签: google-cloud-platform apache-kafka kafka-consumer-api google-cloud-pubsub


    【解决方案1】:

    Cloud Pub/Sub 相当于 Kafka 的消费者组是订阅。订阅者相当于消费者。 This answer 更详细地说明了订阅和订阅者之间的关系。

    您在 Cloud Pub/Sub 术语中的示例将有一个主题 StockTicks,其中包含两个订阅(称为 CG1 和 CG2)。您将调出四个订阅者,两个为订阅 CG1 获取消息,两个为订阅 CG2 获取消息。 Acking 和 replay 将独立于 CG1 和 CG2,因此如果您要回溯到 CG1,它根本不会影响向 CG2 的订阅者传递消息。

    请记住,对于 Cloud Pub/Sub,只有在成功创建订阅后发布的消息才会传送给该订阅的订阅者。因此,如果您创建一个新订阅,您将无法获得自开始以来发布的所有消息;从那时起,您只会收到发布的消息。

    如果您重新订阅订阅,则最多只能重播 7 天的消息(假设订阅是在至少 7 天前创建的),因为这是 Cloud Pub/Sub 中消息的最长保留时间。

    【讨论】:

    • 不,pub/sub 允许重播消息,cloud.google.com/pubsub/docs/replay-overview。而且 ConsumerGroups 在 Kafka 中的工作级别比简单订阅更高,特别想知道 GCP 发布/订阅是否支持该功能的重播。
    • Pub/Sub 允许重播消息,但不能保证您会在订阅创建之前获得发布的消息。如果您有另一个订阅,您从中创建了快照,然后您在新订阅上寻找该快照,您可以获得以前的消息,但这将是原始订阅未确认的消息集,从中获取快照,不一定是所有消息的集合。 ConsumerGroups 所做的“比简单订阅更高的级别”是什么?
    • 谢谢,我已经用我正在寻找的示例更新了这个问题。如果在创建订阅之前提交的消息不会被重播,那就没问题了。在 PubSub 世界中出现 Subscription = ConsumerGroup?您能否让特定的订阅重播消息,而其他订阅不会受到同一主题的影响?
    • 当你说“CG1:有两个订阅”时,这里的“订阅”是什么意思?您是指消费者,即正在运行的正在接收消息的任务吗?还是您指的是其他订阅概念?
    • 这并不能解决在订阅创建之前获取消息的问题。我试图确保这里的区别很清楚。此外,即使没有过期,您仍然只能收到 7 天的消息;消息的最长保留时间为 7 天,即使订阅的到期时间长于此。
    猜你喜欢
    • 2022-01-13
    • 2020-07-05
    • 2017-10-11
    • 2021-10-05
    • 2021-12-12
    • 1970-01-01
    • 2019-11-03
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多