chronicle-queue - 在 Chronicle Queue 中跳过文档的最佳方法是什么?
问题描述
从编年史队列中读取文档时,当我对它不感兴趣时,跳过当前文档的最佳方法是什么?
即给出以下代码,我应该放什么而不是评论?
try (DocumentContext context = getTailer().readingDocument(false)) {
if (context.isPresent()) {
// How do I skip the document here?
}
}
解决方案
好吧,我假设您至少需要放置一些代码来证明您确实对这个特定文档不感兴趣。否则 - 你什么都不放,当文档上下文关闭时 - 文档被跳过。
但是,如果您知道您刚刚阅读了一个文档,该文档告诉您应该跳过下一个文档,并且您觉得很冒险,您可以这样做:
@Test
public void testSkip() {
final SingleChronicleQueue q = SingleChronicleQueueBuilder.binary("test").build();
final ExcerptAppender appender = q.acquireAppender();
appender.writeText("Hello");
appender.writeText("Cruel");
appender.writeText("World");
final ExcerptTailer tailer = q.createTailer().toStart();
boolean skip = false;
while (true) {
if (skip)
tailer.moveToIndex(tailer.index() + 1);
final String text = tailer.readText();
if (text == null)
break;
System.err.println(text);
skip = text.equals("Hello");
}
}
推荐阅读
- vue.js - “通过导航守卫从 {route} 重定向到 {another route}。” 在进行第二次重定向后
- powerbi - 如何将连接表中的行计数为 Power BI 中的列?
- r - 使用 dplyr 分组的多个二元变量的频率/百分比
- r - 如何在 RStudio Markdown 中编译 pdf?
- solr - Solr 无法在 Broadleaf Commerce 上获得财产价值
- excel - VBA 嵌套 IF/ElseIF 帮助条件超链接创建
- spring - Spring Boot Webflux:RouterFunctions 添加查询参数
- c++ - 二进制搜索用任意字节数编码的整数列表
- ruby - 将 selenium docker 容器 IP 传递给 ruby cucumber 脚本
- javascript - 如何更改 Node JS 中的对象字段值?