Home

the HTTQ project #


HTTQ is a small, fast and portable message queue written in Go with no third-party dependencies. With a strong focus on being simple, transparent and reliable, HTTQ aims at being a very straightforward alternative to AMQP and other message queueing solutions.

It is currently available for Linux (x86_64).
Builds for FreeBSD (x86_64) and Windows (x86_64) are planned for the upcoming 0.7.0 release.

You can check the currently supported features, near-future upcoming features, and our detailed API reference.

The latest version is 0.6.11.
Download the demo version or check the changelog.

If you’re interested in this project, you may get in touch with the author.


Supported features #

The following features are currently supported by HTTQ itself:

  • Submitting and retrieving messages up to 4 megabytes in length, with an arbitrary Content-Type.
  • Identifying when a given message was submitted to a particular queue, or read from a particular queue, and which external system triggered such an event (Client-Id).
  • Assigning a unique identifier to each newly submitted message (Message-Id).
  • Creating an unlimited amount of queues, constrained only by hardware resources.
  • Saving all queues upon exit, and restoring them when HTTQ is started again.
  • Offering a fully independent API, regardless of how a particular queue might behave: that is an implementation detail based on the queue’s driver.
  • Logging all relevant events to the OS logging subsystem. All events are logged in such a way that it’s fairly trivial to write a regular expression to extract information from them.

The following features are currently provided by the memfifo driver:

  • Limiting how much memory a given queue may allocate/consume, at most.
    This limit ranges between 0 bytes, up to 256 terabytes.
  • Guaranteeing an exactly-once delivery policy: messages are deleted whenever they are read.
  • Guarateeing full atomicity: two or more concurrent writes will never overwrite each other.
  • Offering a first-in, first-out write/delivery order.

Upcoming features #

Support for these features hasn’t been implemented yet, but is planned for the following versions:

0.7.0 #

  • Being able to organise queues in a hierarchy with parents and children.
  • Delivering a single message to multiple queues (fan-out).
  • Official builds for FreeBSD (x86_64) and Windows (x86_64).

0.8.0 #

  • HTTPS support.
  • A tail-like log endpoint that makes it easy for users to read HTTQ’s logs even when not remotely connected to its server. Inspect the system in real time.

0.9.0 #

  • A new driver, specially written for implementing task queues, which allows messages to be acknowledged, prior to deletion. This will guarantee at-least-once delivery.

0.10.0 #

  • Persistent messages (diskfifo driver).

0.11.0 #

  • Automatic message integrity checks.

Downloads #

These are demonstration builds for all currently supported operating systems.
The demo version automatically shuts down after 30 minutes.

Linux (x86_64) #

Download here

Built on Red Hat Enterprise Linux 8 using Go 1.21.4.
Should run on most distributions, as glibc >= 2.28 is the only dependency.

Tested on:

  • openSUSE Tumbleweed and Leap 15.5
  • Debian 12 and 11
  • Ubuntu 22.04 and 20.04
  • Fedora 39, 38 and 37
  • Red Hat Enterprise Linux 9 and 8 (including derivatives)
  • Arch Linux

Made with love and a lot of coffee in Porto Alegre, Brazil
Powered by   openSUSE   Go   Clojure   GNU Emacs   Hugo