= Chronicle Queue User Guide
keywords: chronicle, queue, java
author: Per Minborg, Julia Gustafsson
:reftext: Introduction
:navtitle: Introduction
:source-highlighter: highlight.js

== A High Performance Message Queue
Chronicle Queue is a low-latency message queue that allows persistence of messages in high performance, mission critical applications. It can be used for low latency Interprocess Communication (IPC) without affecting your system performance, hence is tailored to transfer large amounts of data.

== Overview of Documentation
The Chronicle Queue documentation comprises two parts of which the first is this comprehensive user guide, and the second a rich library of runnable code examples.

=== User Guide
The user guide is structured as follows:

WARNING: This section is under construction

* **Getting started** - An introduction to Chronicle Queue along with hands on instructions to get started. The glossary is a good place to look if any of the vocabulary is unfamiliar.
* **Configuration** - Chronicle Queue is flexible and can be fined-tuned to suit a large variety of use cases. Read this chapter to learn about available options.
* **Appending** - Learn how to write to a queue.
* **Tailing** - Learn how to read from a queue.
* **Performance tuning** - As every environment is different, this chapter points out key factors to obtain the best performance with Chronicle Queue.
* **★ Replication** - Replication is an Enterprise feature allowing queues to be automatically replicated across machines or cores. This chapter teaches how that is accomplished.
* **★ Encryption** - Learn how to protect the contents of a Chronicle Queue with encryption.

=== Runnable Demos
Chronicle has gathered all runnable code demonstrations on GitHub for easy access. The demos are great examples of how the learnings from the user guide can be put into practise.

NOTE: The documentation primarily covers usage of Chronicle Queue with Java. If you are interested in the C++ version please contact link:mailto:sales@chronicle.software[sales@chronicle.software].

== Where to Begin
If this is your first time getting to know Chronicle Queue, you may want to familiarize yourself with the overall capabilities of Queue by reading xref:introduction:what-is-chronicle-queue.adoc[What is Chronicle Queue?]. Thereafter, follow the xref:getting-started:quick-start.adoc[Quick-start Guide] to get set up in minutes. Then you are ready to explore the rest of the chapters that explores

In case you are not yet interested in integrating Queue in one of your projects, you may want to start out by running one of our demos. You find our demonstrations [here].

== Chronicle Queue Enterprise
link:https://github.com/ChronicleEnterprise/Chronicle-Queue-Enterprise[Chronicle Queue Enterprise] is a commercially supported version of Chronicle Queue OSS.
The following features are implemented by Chronicle Queue Enterprise:

* Low latency, brokerless, distributed unbounded persisted queue.
* Ultra-low garbage generation.
* Total ordering of events.
* Multiple writers, multiple readers.
* Each machine is a single node with one copy of the data in shared memory, regardless of the number of processes accessing the data.
* Data is recorded to disk asynchronously, even if every process dies.
* Configuration using a YAML configuration file or programmatically.
* Replication from a single producer at a time, to multiple consumers, supporting failover and failback.
* Consumers are automatically synchronized with the most recent cluster member when they are restarted.
* The producer or reader of a queue can wait for a message to have acknowledged replication before continuing.
* Multi-master queues which are ordered for events in a node, but not between nodes.

This documentation covers the open source functionality but is also extended by a few chapters describing enterprise specific features. These sections are clearly marked with a star-symbol (★) and include:

* Encryption of message queues and messages.

* TCP/IP Replication between hosts to ensure real-time backup of all your queue data.

* Timezone adapted rollover schedule.

* Using Chronicle Queue Async Mode for improved performance at high throughput on slower filesystems.

For more information on Chronicle Queue Enterprise, please contact link:mailto:sales@chronicle.software[sales@chronicle.software].

== Phone Home
Chronicle Queue sends usage data and platform information via a secure connection to Google Analytics, a web analytics service provided by Google, Inc.("Google"). This data is collected to learn how Chronicle's products are used, which in turn helps us focus our resources more efficiently in our effort to improve our libraries and provide better and more widely adopted solutions for the community.

Learn more about what data is collected and why link:https://github.com/OpenHFT/Chronicle-Queue/blob/ea/DISCLAIMER.adoc[here.]
