问题标签 [chronicle-queue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 将来的文件编年史“找不到文件”
我正在使用 Chronicle Queue v4.5.15。我创建了一个方法来告诉我队列中的元素数量:
我在一夜之间进行了测试,我的组件有一个为 12 月 22 日编写的 cq4 队列文件。它是一个每日周期。我今天尝试将一些元素添加到队列中,但抛出了异常'IllegalStateException: 'file not found' for the upperCycle, file ../path_to_queue/20161314.cq4
。
堆栈跟踪:
今天是12月23日,Chronicle为什么还要找档案呢?
这可能与我获得最后一个索引的方式有关吗?
谢谢
chronicle - 香草队列创建
这曾经与编年史队列 v3 一起使用。它不会在 v4 中创建队列。我究竟做错了什么?谢谢。
Chronicle ChronicleSignal = ChronicleQueueBuilder.vanilla("somePath").build();
ExcerptAppender appender = ChronicleSignal.createAppender();
chronicle - Chronicle Queue 4.5.19 中的 SIGSEGV
什么会导致编年史队列出现段错误?我假设我在某处错过了配置。我有一个这样创建的只读编年史队列:
JVM segfaulted 2016-12-31T00:00:00,这是我假设队列文件被循环的时候。这是环境:
编年史队列 4.5.19 JVM OpenJDK 1.8.0_112-b16 Ubuntu 14.04.3 LTS Linux 3.13.0-74
这是堆栈跟踪:
chronicle - 具有 Chronicle-Queue 内存的应用程序不断增长
我已经实现了一个简单的 Spring Boot 应用程序,它接收网络消息,使用 appender.writeText(str) 将其排队到 SingleChronicleQueue,另一个线程使用 tailer.readText() 轮询消息。经过一些处理后,处理过的消息被放置在另一个 SingleChronicleQueue 中以发送出去。我在应用程序中有三个队列。
该应用程序每晚都会轮换文件,而第一个奇怪的事情是文件大小(对于每个 Q)是相同的(对于每个 Q 是不同的)。最大的 cq4 文件每天大约 220MB。
我面临的问题是,从开始到现在的三天内,内存从 480MB 增长到 1.6GB,这是不合理的。
我有一个想法,我在配置中遗漏了一些东西,或者我的实现很天真/糟糕。(我不会在每次使用后关闭 appender 和 tailer,应该这样)。
这是一个精简的示例,也许有人可以阐明。
java - Chronicle Queue:将循环整数转换为时间戳,反之亦然
有没有办法将编年史队列中的某个周期转换为时间戳?我检查了 4.5 apidocs 并没有找到任何东西。
java - 读取写入编年史队列的最后一个元素
我正在使用 SingleChronicleQueue 实现来跟踪我从数据队列(也是 SingleChronicleQueue)中处理的最后一个元素。
为了从崩溃中恢复,我需要读取状态队列中的最后一个元素,这将为我提供最后处理的数据元素的索引。这很好用,但我对找到最后一个状态元素的方式不满意。
我现在做的是使用队列的 firstCycle() 和 lastCycle() 方法。然后我必须回去测试这些方法给出的循环范围内是否有任何元素,因为 lastCycle() 方法将返回一个与磁盘上可能存在或不存在的循环文件相对应的数字。(取决于应用程序关闭了多长时间)
一旦找到第一个周期(带有数据),我就会读取所有元素,直到我到达终点。这给了我处理最后一个数据索引的最后一个状态元素。
有没有更优雅的方式来获取最后一个状态元素。我已经尝试过 ExcerptTailer.toEnd() 但它在(丢失)循环文件的情况下不起作用..
java - Chronicle Queue:blockSize、索引计数和大小指导
ChronicleQueueBuilder 接口(4.5)允许对队列文件特征进行参数化。默认情况下,我每天获得 80mb 的文件。
- 是否有任何指导应该如何使用这些值?
- 有哪些取舍?我可以优化它以让附加程序快速查找索引吗?
- 如果我知道我的平均摘录大小和每个时段的平均摘录数量,我可以选择这些值来避免在白天调整队列文件的大小吗?
java - Chronicle Queue:使用更少或没有 lambdas
该文档显示了通常带有 lambda 的 appender 或 tailer 的用法,如下所示:
对于tailer II 使用:
在阅读过程中,我想做一些更新计数器之类的事情,但这在 lambda 中是不可能的(需要“有效最终”的值/对象)。
- 在没有 lambda 的情况下使用 API 有什么好的做法?
- 关于如何做到这一点的任何其他想法?(目前我使用 AtomicInteger 对象)
chronicle - Chronicle Queue 会成为单点故障吗?
Chronicle Queue 有弹性吗?
例如,如果我有 50,000 个客户端都非常频繁地向 Chronicle Queue 发送数据,我如何保证所有消息都以分布式形式安全存储?
如果 Chronicle Queue 出现故障怎么办?
那么它会成为我的消息传递结构中的单点故障吗?