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) and FreeBSD (x86_64).

You can check the currently supported features, and our detailed API reference.

The latest version is 0.8.0.

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.
  • Being able to organise queues in a hierarchy with parents and children.

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.

The following features are currently provided by the fanout driver:

  • Delivering a single message to multiple queues. Sending a message to a parent queue delivers it to all of its children.

Downloads #

Direct downloads are not available at this time.
Please get in touch with the author and he’ll provide you with a binary.

Details about the Linux build (x86_64) #

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