5

TL;DR; パフォーマンスの高い永続的なブロック キューを備えたライブラリがあるかどうかを知る必要があります。

私は古典的な生産者/消費者プログラムを持っています。それらLinkedBlockingQueueはデータを共有するために a を共有しBlockingQueue#take、新しい要素を待って永遠に生き続ける必要があるため、Consumer でメソッドを使用します。

問題は、大量のデータがあり、それらを失うことができないことです。コンシューマーが停止した後でも、プロデューサーは持続してデータを生成できます。H2BlockingQueue ta を実装して、しきい値に達した後にデータを保存/取得することを考えています。私の主な問題は、パフォーマンスが必要であり、作成された順序で要素を消費する必要があることです。

このようなものに使用できる永続的なブロッキング キューの実装はありますか? そうでない場合、このようなことを達成するための提案はありますか?

4

4 に答える 4

3

ActiveMQ lib と Spring JMS を使用します。使用例を次に示します。

ブローカーを開始

BrokerService broker = new BrokerService();
broker.addConnector("tcp://localhost:61616");
broker.start();

メッセージを読む

ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
JmsTemplate t = new JmsTemplate(cf);
Message msg = t.receive();

メッセージを送る

ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
JmsTemplate t = new JmsTemplate(cf);
t.send("test", new MessageCreator() {
  public Message createMessage(Session session) throws JMSException {
    return session.createTextMessage("test");
  }
});
于 2013-03-08T00:23:22.150 に答える
1

Amazon SQSは無制限のキューであり、非常に高速です。順序を保証します。データをどのくらい保持しますか?

于 2013-03-07T23:05:48.547 に答える