Overview
Zizq is a simple, single binary, zero dependency job queue system that runs on
most platforms and provides integration with clients written in just about any
programming language. The zizq binary provides everything needed to run Zizq
in your environment.
Zizq is source-available software, developed in the open on GitHub and most features are available free forever. Some more advanced features require a license.
You can download a release compatible with your environment from the releases page on GitHub.
Key Concepts
Before using Zizq it helps to understand some of the core concepts.
Versioning
In order to minimize bloat the server does not provide multiple versions of each endpoint.
Zizq and all official client libraries are versioned with the same version
numbers, following the SemVer structure [MAJOR].[MINOR].[PATCH].
Whenever a new major or minor version of the server is released, client libraries with the same major and minor version numbers are also released.
Clients should use the same major version number as the server version, and should use a minor version number equal or lower than the server version. Clients should never exceed the version number on the server.
Subcommands
The zizq binary is a single binary that contains everything your system needs
to operate Zizq. The executable is arranged into subcommands, with the default
subcommand being serve.
Configuration
In general Zizq can be configured either by specifying a command line flag
(e.g. --root-dir) or an equivalent environment variable
(e.g. ZIZQ_ROOT_DIR). Most configuration is done this way, rather than
through configuration files. This works nicely for containerized deployments.
Some command line flags (e.g. --root-dir) are global and apply to all
commands while others are specific to their subcommands.
Root Directory
Zizq does not depend on external storage such as a RDBMS or a Redis cluster.
Instead, Zizq manages its own storage using a LSM database. The directory in
which Zizq stores this database, along with other important files, is known as
the root directory. By default this directory is ./zizq-root relative to the
working directory from which zizq is executed. This can be specified through
a command line flag or an environment variable.
It is important that Zizq is always started with the same root directory for data to persist across restarts. This directory can, and should be backed up.
Client/Server
The zizq binary provides the server through which clients connect. Clients
are implemented in different programming languages and can be scaled
horizontally. You could have clients connecting from your Ruby application
along with clients from Node and Go applications, either operating
independently of one another, or working together as a single system.
License Keys
Zizq is developed in the open on GitHub. Most features are free and do not require a license key, but some more advanced features do require a license key. Licenses can be purchased through the website and function entirely offline. Zizq does not require connectivity to a license server.
Clients do not use license keys; license keys are known only to the server.
License key rotation is supported on a live and running Zizq server instance.