我正在使用 Chronicle 4.5.27 编写和读取市场数据。我有一个作家,但有多个读者。开发操作系统是 Windows,然后是 Linux,用于 Prod 部署。
如何实现以下用例?
- 如何从上次读取位置开始读取队列?例如,如果阅读器从一个有 100 条记录的文件中读取了 15 条记录并且崩溃/停止了如何从下一次重新启动时从第 16 条记录开始读取?CQ 中是否有内置的持久支持?
- 删除所有消费者读取的文件以节省磁盘空间。
为此,我已经实现了,但由于一些未解决的问题,文件似乎没有在 Windows 上删除。CQ 中是否有任何内置支持,只有所有感兴趣的消费者都可以删除文件?
public static long readMarketData(String pathForMarketDataFile, long indexFrom) {
SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(pathForMarketDataFile).rollCycle(RollCycles.MINUTELY).storeFileListener(new StoreFileListener() {
@Override
public void onReleased(int i, File file) {
System.out.println("File is not in use and is ready for deletion: " + file.getName());
try {
file.delete();
} catch (IOException e) {
e.printStackTrace();
}
;
System.out.println("File deleted: " + file.getName() );
}
@Override
public void onAcquired(int cycle, File file) {
System.out.println("File is use for reading: " + file.getName());
}
}).build();
我已经阅读了一些关于这个主题的博客和帖子,例如
https://vanilla-java.github.io/2016/03/29/Microservices-in-the-Chronicle-world-Part-4.html
https://groups.google.com/forum/#!topic/java-chronicle/0Nz5P-nvLgM
但仍然想知道是否有人实现了这个用例。