Skip to content
Simple REST API/gRPC for using queues, management for queues, access tokens, track usage of your queues. Multiple backends supported. https://qutrunk.com
JavaScript CSS HTML Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
bin
docs
email
lib
models
proto
public/swagger
repository init Aug 8, 2019
routes
scripts
test
.dockerignore
.gitignore gitignore update Aug 8, 2019
Dockerfile
LICENSE.txt
README.md
app.js
config.js.dist
grpc_server.js
package.json
rabbit_cluster init Aug 8, 2019
rabbit_run
swagger.js

README.md

Qutrunk CircleCI codecov

Qutrunk is a managed queue-as-a-service. Using the simple REST API, you push and pull messages without worrying about queue reliability. Qutrunk supports multiple backends as well as access control using access tokens and statistics, all via the web interface. Read more about architecture in docs

Features

  • 5 minutes setup
  • PUSH and PULL messages with simple GET & POST
  • Manage queues from web GUI
  • Create queue with first message
  • Multiple backends (currently MongoDB, RabbitMQ, Redis)
  • Multiple ingestion/digestion protocols (currently HTTP(S), gRPC)
  • Queue usage statistics and aditing (message log)
  • Access tokens with access control for pushing/pulling/creating queues
  • StatsD metric export

Example usage

You can simply push message with single command

curl --request POST \
  --url 'https://app.qutrunk.com/api/v1/core/push/{QUEUE_NAME}?access_token=ACCESS_TOKEN' \
  --data 'hello world'

and pull it with another

curl --request GET --url 'https://app.qutrunk.com/api/v1/core/pull/{QUEUE_NAME}?access_token={ACCESS_TOKEN}'

More examples in Golang, Node.js, Java, PHP in docs

Supported protocols for ingest/digest of messages

  • HTTP(S)
  • gRPC

Soon:

  • Websockets
  • AMQP

Missing your favourite protocol? File an issue to let us know.

Supported backends

  • MongoDB
  • RabbitMQ
  • Redis

Soon:

  • PostgreSQL
  • MariaDB

Not having your preferred backend? File an issue to let us know or write your own integration and create a pull request.

Installation & configuration

To install Qutrunk just simply clone the repository and install all required dependencies:

git clone git@github.com:spinache/qutrunk-api.git
cd qutrunk-api;
npm install;
cp config.js.dist config.js;

For in-depth configuration please refer to documentation

Running

We recommend starting at least two Node.js processes that listen to HTTP requests. You can setup a reverse proxy like Nginx in front of those processes that will also handle SSL handshakes. For more details refer to docs.

pm2 start --name=app_3001 app.js -- --port=3001
pm2 start --name=app_3002 app.js -- --port=3002

Hosted version

You can use our hosted version of Qutrunk: https://qutrunk.com/

It comes with small quota of about 25 000 messages per month but its suitable for any pet/small project.

If you need a higher quota, please contact us: contact@qutrunk.com

Motivation

Qutrunk was created as an internal tool to integrate tens of internal services where any of them needed a queue. We needed to track usages and access across all of them and interact with queues using HTTP. Another reason was IoT, where we used Qutrunk as a queue provider with HTTP interface we can use on Raspberry, ESP8266 known as NodeMCU and other small development boards.

A blog post about using Qutrunk in IoT with example code in C

After all, we didn't find any similar tool that could use multiple backends that are managed from the GUI. Of course Qutrunk is not meant to be a competitor for projects like Kafka or RabbitMQ, its is more like overlay interface that provides additional features to queues.

Currently we have a single deployment on 3-node cluster (each has 1 vCPU, 2gb RAM, 20 GB HDD) with MongoDB as replica and RabbitMQ with replication. It processes over 1 500 000 messages per day (about 17 msg/s) providing queue service for couple of our other internal projects.

Contact: contact@quturnk.com

This project is created and maintained by Code Fibers

License

Unless otherwise noted, all Metabase source files are made available under the terms of the GNU Affero General Public License (AGPL). See LICENSE.txt for details and exceptions. Unless otherwise noted, all files © 2019 Qutrunk.

You can’t perform that action at this time.