问题标签 [chronicle-wire]
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 - 如何从 InputStream 中读取使用 Chronicle Wire 序列化的数据?
一些数据通过 Chronicle Wire 序列化到输出流。
我想从输入流中取回它们。
如何从中读取我的初始m
对象in
?
chronicle - 如何使用 Chronicle Wire 序列化 Chronicle Queue 的简单对象
我目前将我的对象放入编年史队列如下
考虑到“对象”类正在扩展 AbstractMarshallable 并且有一些整数、长整数和字符串,是否有更有效的方法将其传递给队列?我目前从队列中读取它的方式是调用Marshallable.fromString(text);
. 我正在寻找一个没有太多代码但仍然很快的简单用例。
java - Chronicle Queue - readDocument().isPresent() 在值存在时返回 false
我在这里修改了基本代码 [github] https://github.com/OpenHFT/Chronicle-Queue/blob/master/docs/How_it_works.adoc
基本上我正在拍摄编年史队列一些相同的编组化对象。我包括了一些打印语句来显示发生了什么。
输出
所以根据我的理解......我创建了一个静态对象。我已经把它喂给了编年史队列四次,它们都是同一个对象。您可以看到编年史队列中总共有四个对象。结束索引 - 开始索引。
Trailer.readingDocument().isPresent() 只能看到创建的第一个对象。之后它返回错误...
如果队列中有对象,那么为什么 readingDocument().isPresent() 返回 false?另外为什么对象返回null?
编辑 - 版本实现 'net.openhft:chronicle-queue:5.17.25'
chronicle - 编年史写入在文件滚动时引入 1-2 秒延迟
我们有一个单线程 Java 进程,它将消息写入编年史队列。队列 ( SingleChronicleQueue ) 配置有 RollCycle HOURLY。在每小时标记处,当文件滚动发生时,编年史写入需要超过一秒(通常为 1-2 秒),这似乎发生在更大的文件大小(~50-90 GB)上。我们使用的是 4.5.x 编年史队列版本。关于如何解决这个问题的任何想法?
我使用 jstack 工具进行了线程转储,以查看线程卡在哪里。
chronicle - 如何将 SelfDescribeingMarshallables 列表序列化为 CSV
我需要使用 Chronicle Wire 逐行序列化与 CSV 输出相同类型的 SelfDescribeingMarshallables 列表。但net.openhft.chronicle.wire.WireType#CSV
为每个对象字段生成一行,因此它不是 CSV。有代码示例吗?
chronicle - ChronicleWire 是否支持实体中的可选字段?
我正在尝试使用 ChronicleWire。如特性中所述,可选字段支持开箱即用。
我刚刚创建了一个简单的自描述实体,其中包含一个可选(可为空)字段:
wherebaz
可能或可能不是 null 并实现/扩展 Marshallable。
当我尝试将实体放入 ChronicleMap 时,出现错误:
当我尝试改用 java optional 并且我的实体更改为:
然后引发了另一个错误:
我没有放弃并尝试实现我自己的可选。这是:
在这种情况下,我看到了另一个错误:
那么有人知道如何正确修复或使用它吗?编年史线 2.22ae6
java - 两个不同队列的 ChronicleQueue 尾部可以交错吗?
我有两个独立的 ChronicleQueues,它们是由独立线程创建的,它们监视 Java 应用程序中的 Web 套接字流。当我在单独的单线程程序中独立读取每个队列时,我可以按预期遍历每个整个队列 - 使用以下最少的代码:
在上面,我能够读取所有 Queue1Data 对象,然后是所有 Queue2Data 对象并按预期访问值。但是,当我尝试交错读取队列时(根据 Queue1Data 对象的属性(时间戳)从一个队列中读取对象,读取 Queue2Data 对象,直到时间戳之后的第一个对象(下面的限制变量) ,找到活动的 Queue1Data 对象 - 然后对其进行处理)仅读取 queue2Tailer 中的一个对象后,抛出异常.DecoratedBufferUnderflowException: readCheckOffset0 failed
。失败的简化代码如下(我尝试将外while(true)
循环放在queue2Tailer try
块的内部和外部):
我已经按照上面的方法进行了尝试,并且在执行处理的函数的开头创建了两个 Tailers(在相对简单的 Java 应用程序中单击按钮时执行的私有函数)。基本上我采用了独立工作的循环,并将其放在函数的另一个循环中,预计不会出现问题。我想我在如何定位和用于读取对象方面遗漏了一些至关重要的东西,但我无法弄清楚它是什么 - 因为相同的基本代码在独立读取队列时起作用。使用isNull(context.wire())
来确定队列中何时不再有对象我从其中一个示例中获得,但我不确定这是在顺序处理队列时确定队列中何时不再有对象的正确方法。
任何建议,将不胜感激。