gpt4 book ai didi

load-balancing - Google Pub/Sub - 多个订阅同一主题以通过 REST API 减少负载?

转载 作者:行者123 更新时间:2023-12-01 00:49:30 26 4
gpt4 key购买 nike

一个主题将有一个发布者。假设每秒有 1000 条消息。

我可以通过让多个端点接收消息来平衡这些负载吗?

这就是我想要做的:
(Google Pub/Sub 的 REST API 是否允许这样做?)

JMS 2.0 提供了一个解决方案。您可以使用新方法创建“共享”非持久订阅:createSharedConsumer。此方法在 Session(用于使用经典 API 的应用程序)和 JMSContext(用于使用简化 API 的应用程序)上都可用。由于两个 JVM 需要能够识别它们需要共享的订阅,因此它们需要提供一个名称来识别共享订阅,如 list 2 所示。

private void createSharedConsumer(ConnectionFactory connectionFactory, Topic topic) throws JMSException {
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer messageConsumer = session.createSharedConsumer(topic,"mySubscription");
connection.start();
Message message = messageConsumer.receive(10000);
while (message != null) {
System.out.println("Message received: " + ((TextMessage) message).getText());
message = messageConsumer.receive(10000);
}
connection.close();
}

list 2

如果您在两个单独的 JVM 中运行 list 2 中的代码,则发送到主题的每条消息都将传递给两个消费者中的一个或另一个。这允许他们共享处理来自订阅的消息的工作。

http://www.oracle.com/technetwork/articles/java/jms2messaging-1954190.html

JMS 2.0 规范描述了共享订阅的概念,其中多个订阅者/消费者共享(也称为负载平衡)消息发布在一个主题上。所有消费者使用相同的订阅 ID。

最佳答案

我刚发现这个:

负载平衡多个订阅者可以对同一个“共享”订阅进行拉取调用。每个订阅者都会收到消息的一个子集。推送端点可以是负载均衡器。

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

关于load-balancing - Google Pub/Sub - 多个订阅同一主题以通过 REST API 减少负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42539246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com