使用完全相同的代码,高频 hazelcast ringbuffer 客户端不更新但低频客户端是
Using exactly the same code, a high frequency hazelcast ringbuffer client not updating but low frequency client is
我有下面的代码用来监听各种ringbuffer。有的是高频价格数据,有的是低频交易数据:
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 集群,当数据发布到环形缓冲区时,它会被读取和操作。然而,对于大量数据大量发布到环形缓冲区的高频数据,上面的 reader 启动,并自动发现 hazelcast 集群,但随后根本不读取任何数据......虽然在1 次它确实成功了。
我也试过
long sequence = databuffer.tailSequence() + 1;
对可能出现的问题有什么想法吗?
这是我自己的问题,因为我实际上并没有发布我想听的数据。啊啊啊!
效果不错
我有下面的代码用来监听各种ringbuffer。有的是高频价格数据,有的是低频交易数据:
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 集群,当数据发布到环形缓冲区时,它会被读取和操作。然而,对于大量数据大量发布到环形缓冲区的高频数据,上面的 reader 启动,并自动发现 hazelcast 集群,但随后根本不读取任何数据......虽然在1 次它确实成功了。
我也试过
long sequence = databuffer.tailSequence() + 1;
对可能出现的问题有什么想法吗?
这是我自己的问题,因为我实际上并没有发布我想听的数据。啊啊啊!
效果不错