使用完全相同的代码,高频hazelcast ringbuffer客户端不更新,但低频客户端正在更新
我有下面的代码,用于侦听各种环形缓冲区。有些是高频价格数据,有些是低频交易数据:使用完全相同的代码,高频hazelcast ringbuffer客户端不更新,但低频客户端正在更新,hazelcast,hft,Hazelcast,Hft,我有下面的代码,用于侦听各种环形缓冲区。有些是高频价格数据,有些是低频交易数据: public static void main(String[] args) { HazelcastInstance client = Hazelcast.newHazelcastInstance(); Ringbuffer<String> databuffer = client.getRingbuffer("data"); long sequence
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 ++;
}
}
关于可能出现的问题有什么想法吗?这是我自己的问题,因为我没有发布我想要听的数据。啊
它工作得很好。您能创建一个单元测试来重现这种行为吗?我创建了ringbuffer,所以我可以帮助您解决这个问题。也许您遇到了StaleSequenceException?如果生产者以非常高的速率生产,则可能是读卡器的数据被覆盖,然后您会遇到此异常。因此,您是否在某处看到异常>@pveentjer否没有看到任何异常上面的程序自动发现hz群集,然后等待。好像databuffer.ReadOne方法没有捕捉到最新的发布事件。你能创建一个单元测试来重现这个问题吗?@pveentjer谢谢你的评论这是我自己的问题,还有相关的iTopic问题。。。
long sequence = databuffer.tailSequence() + 1;