さまざまなリングバッファーをリッスンするために使用される次のコードがあります。高頻度の価格データもあれば、低頻度の取引データもあります。
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;
何がうまくいかないのかについてのアイデアはありますか?