我有以下代码用于收听各种环形缓冲区。有些是高频价格数据,有些是低频交易数据:
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 集群,当数据发布到 ringbuffer 时,它会被读取并执行。但是,对于大量数据发布到 ringbuffer 的高频数据,上面的阅读器启动,并自动发现 hazelcast 集群,但随后根本不读取任何数据......虽然有一次它做到了设法工作。
我也试过
long sequence = databuffer.tailSequence() + 1;
关于可能出了什么问题的任何想法?