Chronicle Queue is similar to a low latency broker less durable/persisted JVM topic. The Latency is usually less than 100 Microseconds.
Chronicle Queue is a distributed unbounded persisted queue. Chronicle Queue:
supports asynchronous RMI and Publish/Subscribe interfaces with microsecond latencies.
passes messages between JVMs in under a microsecond (in optimised examples)
passes messages between JVMs on different machines via replication in under 10 microseconds (in optimised examples)
provides stable, soft, real time latencies into the millions of messages per second for a single thread to one queue; with total ordering of every event
Chronicle Queue is a Java project focused on building a persisted low-latency messaging framework for high performance and critical applications.
At first glance Chronicle Queue can be seen as simply another queue implementation. However, it has major design choices that should be emphasised.
Using non-heap storage options (
RandomAccessFile), Chronicle Queue provides a processing environment where applications do not suffer from Garbage Collection (GC). When implementing high-performance and memory-intensive applications (you heard the fancy term "bigdata"?) in Java, one of the biggest problems is garbage collection.
Garbage collection may slow down your critical operations non-deterministically at any time. In order to avoid non-determinism, and escape from garbage collection delays, off-heap memory solutions are ideal. The main idea is to manage your memory manually so it does not suffer from garbage collection. Chronicle Queue behaves like a management interface over off-heap memory so you can build your own solutions over it.
Chronicle Queue uses
RandomAccessFiles while managing memory and this choice brings lots of possibilities.
RandomAccessFiles permit non-sequential, or random, access to a file’s contents. To access a file randomly, you open the file, seek a particular location, and read from or write to that file. RandomAccessFiles can be seen as "large" C-type byte arrays that you can access at any random index "directly" using pointers. File portions can be used as
ByteBuffers if the portion is mapped into memory.
This memory mapped file is also used for exceptionally fast interprocess communication (IPC) without affecting your system performance. There is no garbage collection as everything is done off-heap.
Developing Java Applications with Unicode Data. Read More
Java 13 Pattern Matching Feature Explained. Read More
RSocket Jwt Authentication/Authorization using Spring Security 5.2.0.RC1. Read More