Dan*_*rte 1 load-balancing google-cloud-pubsub
一个主题只有一位发布者。假设每秒有1000条消息。
我可以通过让多个端点接收消息来负载均衡这些消息吗?
这就是我想要做的:(用于Google Pub / Sub的REST API允许吗?)
JMS 2.0提供了一个解决方案。您可以使用新方法createSharedConsumer创建“共享”的非持久订阅。Session(对于使用经典API的应用程序)和JMSContext(对于使用简化API的应用程序)都可以使用此方法。由于这两个JVM需要能够标识它们需要共享的订阅,因此它们需要提供一个名称来标识共享的订阅,如清单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();
}
Run Code Online (Sandbox Code Playgroud)
清单2
如果在两个单独的JVM中运行清单2中的代码,则发送给该主题的每条消息都将传递给两个使用者中的一个。这使他们可以共享处理来自订阅的消息的工作。
http://www.oracle.com/technetwork/articles/java/jms2messaging-1954190.html
JMS 2.0规范描述了共享订阅的概念,其中一个主题上发布了多个订阅者/消费者共享(即负载平衡)消息。所有使用者都使用相同的订阅ID。
我刚发现:
负载平衡多个订阅者可以对同一“共享”订阅进行拉式调用。每个订户将收到消息的子集。推送端点可以是负载平衡器。
来自https://cloud.google.com/pubsub/docs/subscriber
| 归档时间: |
|
| 查看次数: |
4589 次 |
| 最近记录: |