Google发布/订阅队列或主题吗?

时间:2019-12-16 09:28:43

标签: jms google-cloud-pubsub messagebroker

我对JMS和Google Pub / Sub的新手都很熟悉。

在JMS中,有2个选项:

  • 队列:只有一个消费者可以接受消息。
  • 主题:每个消费者都接受来自主题的每条消息

我相信Google Pub / Sub应该支持这样的功能,但是快速谷歌搜索并不能帮助我回答这个问题。

请向我指出相应的文档部分。

2 个答案:

答案 0 :(得分:2)

正如名称“ Pub / Sub”所示,Google Pub / Sub支持与JMS主题相对应的发布/预订语义。它不支持与JMS队列相对应的点对点语义,至少不直接如此。

您可以在the documentation中看到语义的概述。 “发布者-订阅者关系”部分可能会有所帮助。需要明确的是,本文档在两个地方确实使用了 queue 这个词:

  1. 在“发布/订阅消息流”部分中:“订阅者确认消息后,会将其从订阅的消息队列中删除。”
  2. 在“常见用例”部分中:“例如,可以将大量任务高效地分配给多个工作人员,例如Google Compute Engine实例。”

此处的 queue 术语用于指代该主题的实际 subscription (即,放置消息以供订户使用的位置)。此外,architectural overview包括以下图表: Google Pub/Sub architecture 该图说明了多个订户如何从同一订户接收消息(例如,用于平衡工作负载)。这类似于“共享订阅”功能added for topics in JMS 2

答案 1 :(得分:0)

我一直在寻找这个问题的答案,并且找到了描述队列行为而非主题的文档:

https://cloud.google.com/pubsub/docs/subscriber

尽管消息对订户未处理,但是Pub / Sub会尝试 不要将其交付给同一订阅上的任何其他订阅者。

所以我的理解是,如果您愿意

  • 一个主题行为(一对多):您与一个订阅者创建了多个订阅,每个订阅都会收到一条消息

  • 具有跨订阅者负载平衡的队列行为:您创建具有多个订阅者的订阅。

我没有看到订阅的订阅者之间的分配情况。可能是循环赛。