是否有不使用循环的轻量级版本的 Chronicle Queue?
Is there a lightweight version of Chronicle Queue that does not use cycling?
我想使用 Chronicle Queues 作为用户消息的收件箱,我的应用程序的每个用户都有自己的队列。但是,我面临以下 "issues":
由于每个用户的消息数量不是那么多,因此单个用户的所有消息都可以存储在一个队列文件中而无需循环。 如何禁用循环?
如果可以禁用循环,是否可以将整个队列存储在单个文件中而不是包含单个队列文件加上directory-listing.cq4t ?
在我使用 EXT4 文件系统的 Linux OS 上,一个空队列使用 83.9Mb 的磁盘 space。 这可以减少到只占内容的大致大小吗?
如果无法避免一个或多个给定问题,是否有另一种方法可以使用 Chronicle 队列(如子队列或其他)实现用户收件箱?
要减小文件的大小,可以减少队列使用的blockSize
:
try (final SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(tmpDir.newFolder()).
blockSize(4096).
build()) {
您可以将邮箱名称存储为每个事件的一部分:
try (final DocumentContext documentContext =
queue.acquireAppender().writingDocument()) {
documentContext.wire().getValueOut().
text("user@mailbox").writeText(email);
}
最后,如果您真的想禁用循环行为,您可以为队列提供一个永不前进的时钟:
final AtomicLong fixedClock = new AtomicLong(System.currentTimeMillis());
try (final SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(tmpDir.newFolder()).
timeProvider(fixedClock::get).
blockSize(4096).
build()) {
请注意,此操作模式不受支持。
队列的内部机制需要目录列表文件,因此没有它就无法使用队列。
确保在更改任何这些配置参数时执行测试。
我想使用 Chronicle Queues 作为用户消息的收件箱,我的应用程序的每个用户都有自己的队列。但是,我面临以下 "issues":
由于每个用户的消息数量不是那么多,因此单个用户的所有消息都可以存储在一个队列文件中而无需循环。 如何禁用循环?
如果可以禁用循环,是否可以将整个队列存储在单个文件中而不是包含单个队列文件加上directory-listing.cq4t ?
在我使用 EXT4 文件系统的 Linux OS 上,一个空队列使用 83.9Mb 的磁盘 space。 这可以减少到只占内容的大致大小吗?
如果无法避免一个或多个给定问题,是否有另一种方法可以使用 Chronicle 队列(如子队列或其他)实现用户收件箱?
要减小文件的大小,可以减少队列使用的blockSize
:
try (final SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(tmpDir.newFolder()).
blockSize(4096).
build()) {
您可以将邮箱名称存储为每个事件的一部分:
try (final DocumentContext documentContext =
queue.acquireAppender().writingDocument()) {
documentContext.wire().getValueOut().
text("user@mailbox").writeText(email);
}
最后,如果您真的想禁用循环行为,您可以为队列提供一个永不前进的时钟:
final AtomicLong fixedClock = new AtomicLong(System.currentTimeMillis());
try (final SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(tmpDir.newFolder()).
timeProvider(fixedClock::get).
blockSize(4096).
build()) {
请注意,此操作模式不受支持。
队列的内部机制需要目录列表文件,因此没有它就无法使用队列。
确保在更改任何这些配置参数时执行测试。