필자는 시장 데이터를 쓰고 읽는 데 크로니클 4.5.27을 사용하고 있습니다. 나는 한 명의 작가이지만 여러 명의 독자가있다. 개발 OS는 Windows이고 Prod 배포를 위해서는 Linux가 뒤 따른다.크로니클 대기열 - 모든 소비자가 읽을 수있는 경우 마지막 읽기 위치에서 읽고 파일을 삭제합니다.
다음 사례를 구현하는 방법은 무엇입니까?
- 마지막 읽기 위치에서 큐 읽기를 시작하는 방법은 무엇입니까? 예 : 독자가 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://groups.google.com/forum/#!topic/java-chronicle/0Nz5P-nvLgM
그러나
https://vanilla-java.github.io/2016/03/29/Microservices-in-the-Chronicle-world-Part-4.html
어느 한이 사용 사례를 구현하고 있는지 알고 싶습니다.
참고 : 창에는 파일이 매핑되지 않은 경우에도 프로그램이 종료 될 때까지 삭제되지 않을 수있는 문제가 있습니다. Linux/MacOSX에는이 문제가 없습니다. –
감사 마크와 피터. 내가 마지막으로 레코드를 읽고 자신의 기록 메커니즘을 구현하고 Windows에서 파일을 삭제하기 위해 나는 활성 스레드에서 나온 다음 주기적으로 파일을 삭제해야합니다. – AmbGup