2017-03-01 4 views
0

1つのトピックに対して1つのパブリッシャーが存在します。 1000s /秒のメッセージを考えてみましょう。Google Pub/Sub - REST APIによる負荷を軽減するため、同じトピックに対する複数のサブスクリプション?

複数のエンドポイントにメッセージを受信させることで、これらの負荷を分散できますか?

これは私が何をしたいです: は(/サブはこれをGoogleのパブのためのREST APIを許可していますか?)

JMS 2.0は、ソリューションを提供します。 createSharedConsumerという新しいメソッドを使用して、「共有」非永続サブスクリプションを作成できます。このメソッドは、Session(従来のAPIを使用するアプリケーションの場合)とJMSContext(単純化されたAPIを使用するアプリケーションの場合)の両方で使用できます。 2つの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(); 
} 

リスト2

リストに示すように、共有サブスクリプションを識別するための名前を指定する必要がありリスト2のコードを2つの別々のJVMで実行します。トピックに送信された各メッセージは、2つのコンシューマの一方または他方に配信されます。これにより、サブスクリプションからメッセージを処理する作業を共有することができます。

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

JMS 2.0仕様では、複数の加入者/消費者(ロードバランスa.k.a)株式のメッセージがトピックに公開の共有のサブスクリプションの概念を説明します。すべてのコンシューマが同じサブスクリプションIDを使用

答えて

1

私はこれを見つけた:複数の加入者のバランスをとる

負荷が同じ「共有」サブスクリプションへのプル呼び出しを行うことができます。各加入者は、メッセージのサブセットを受信する。プッシュエンドポイントはロードバランサにすることができます。

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

関連する問題