0

さまざまなリングバッファーをリッスンするために使用される次のコードがあります。高頻度の価格データもあれば、低頻度の取引データもあります。

public static void main(String[] args) 
{       
    HazelcastInstance client = Hazelcast.newHazelcastInstance();    
    Ringbuffer<String> databuffer = client.getRingbuffer("data");

    long sequence = databuffer.headSequence();

    while(true)
    {
        String d = null;

        try 
        {
            d = databuffer.readOne(sequence);
            System.out.println(d);
        } 
        catch (InterruptedException e) 
        {
            StringWriter errors = new StringWriter();
            e.printStackTrace(new PrintWriter(errors));
            System.out.println(errors.toString());
        }

        sequence ++;
    }
}

問題は、低頻度取引データに使用される同じコードが正常に機能していることです。hazelcast クラスターを自動検出し、データがリングバッファーに公開されると、データが読み取られて処理されます。ただし、大量のデータが大量にリングバッファーに公開される高頻度データの場合、上記のリーダーが起動し、hazelcast クラスターを自動検出しますが、まったくデータを読み取りません... 1 回ではありましたが、なんとか働く。

私も試してみました

long sequence = databuffer.tailSequence() + 1;

何がうまくいかないのかについてのアイデアはありますか?

4

1 に答える 1

0

聞きたいデータを実際に公開していなかったので、これは私自身の問題でした。ああああ!

それはうまくいきます。

于 2015-09-08T11:32:03.053 に答える