使用完全相同的代码,高频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;