All Projects → haraqa → haraqa

haraqa / haraqa

Licence: MIT license
High Availability Routing and Queueing Application

Programming Languages

go
31211 projects - #10 most used programming language
HTML
75241 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to haraqa

Liftbridge
Lightweight, fault-tolerant message streams.
Stars: ✭ 2,175 (+4250%)
Mutual labels:  message-queue
Akka Rabbitmq
RabbitMq client in Scala and Akka actors
Stars: ✭ 228 (+356%)
Mutual labels:  message-queue
SPSC Queue
A highly optimized single producer single consumer message queue C++ template
Stars: ✭ 185 (+270%)
Mutual labels:  message-queue
Hangfire.topshelf
Best practice for hangfire samples
Stars: ✭ 192 (+284%)
Mutual labels:  message-queue
Sidekiq monitor
Advanced monitoring for Sidekiq
Stars: ✭ 220 (+340%)
Mutual labels:  message-queue
Enqueue Bundle
[READ-ONLY] Message queue bundle for Symfony. RabbitMQ, Amazon SQS, Redis, Service bus, Async events, RPC over MQ and a lot more
Stars: ✭ 233 (+366%)
Mutual labels:  message-queue
Enqueue Dev
Message Queue, Job Queue, Broadcasting, WebSockets packages for PHP, Symfony, Laravel, Magento. DEVELOPMENT REPOSITORY - provided by Forma-Pro
Stars: ✭ 1,977 (+3854%)
Mutual labels:  message-queue
nodejs-integration-tests-best-practices
✅ Beyond the basics of Node.js testing. Including a super-comprehensive best practices list and an example app (April 2022)
Stars: ✭ 2,842 (+5584%)
Mutual labels:  message-queue
Nats.c
A C client for NATS
Stars: ✭ 220 (+340%)
Mutual labels:  message-queue
coronamq
The simplest way to implement a task queue with Java, Vertx and PostgreSQL.
Stars: ✭ 23 (-54%)
Mutual labels:  message-queue
Qmq
QMQ是去哪儿网内部广泛使用的消息中间件,自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。
Stars: ✭ 2,420 (+4740%)
Mutual labels:  message-queue
Vernemq
A distributed MQTT message broker based on Erlang/OTP. Built for high quality & Industrial use cases.
Stars: ✭ 2,628 (+5156%)
Mutual labels:  message-queue
Kmq
Kafka-based message queue
Stars: ✭ 239 (+378%)
Mutual labels:  message-queue
Kombu
Kombu is a messaging library for Python.
Stars: ✭ 2,263 (+4426%)
Mutual labels:  message-queue
microq
Micro job queue built on mongo
Stars: ✭ 67 (+34%)
Mutual labels:  message-queue
Message Bus
Go simple async message bus
Stars: ✭ 166 (+232%)
Mutual labels:  message-queue
Redis Smq
A simple high-performance Redis message queue for Node.js.
Stars: ✭ 230 (+360%)
Mutual labels:  message-queue
core
Simple JSON-based messaging queue for inter service communication
Stars: ✭ 28 (-44%)
Mutual labels:  message-queue
iris
Lightweight Component Model and Messaging Framework based on ØMQ
Stars: ✭ 50 (+0%)
Mutual labels:  message-queue
Advanced Java
😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
Stars: ✭ 59,142 (+118184%)
Mutual labels:  message-queue

HARAQA

HARAQA - High Availability Routing And Queueing Application

GoDoc Report Card License Build Coverage Status Docker Build Release

haraqa is designed to be a developer friendly, scalable message queue for data persistence and real-time data streaming between microservices. Haraqa provides high-throughput, low-latency, fault-tolerant pipelines for architectures of any size.

Table of Contents

About the Project

Overview

Haraqa is meant for handling and persisting data in a distributed system. One or more servers can be used to send and receive messages. Each server has a set of 'topics', a set of messages stored in the order received.

A Haraqa client can produce and/or consume from a server's topics. Clients can produce messages one at a time or in batches. Clients consume messages by making a request for a specific offset and limit. The messages can be consumed one at a time or in batches.

Persistence and Replication

Each server, after receiving a message from a producer, can save the message to multiple volumes. These volumes are meant to be distributed in the architecture, such as having multiple PersistentVolumes in a Kubernetes cluster, EBS in AWS, or Persistent Disks in Google Cloud. The server reads messages from the last volume when sending to consumer clients.

If a volume is removed or corrupted during a restart the server repopulates the data from the other volumes.

Getting started

API Docs

The docker server also includes local api documentation at the /docs/redocs and /docs/swagger endpoints.

Server

The recommended deployment strategy is to use Docker

docker run -it -p 4353:4353 -v $PWD/vol1:/vol1 haraqa/haraqa /vol1
docker run -it [port mapping] [volume mounts] haraqa/haraqa [flags] [volumes]

To run from source, navigate to cmd/server and run the main.go file.

cd cmd/server
go run main.go vol1
Flags:
  -http    uint    Port to listen on (default 4353)
  -cache   boolean Enable queue file caching (default true)
  -cors    boolean Enable CORS (default true)
  -docs    boolean Enable Docs pages (default true)
  -entries integer The number of msg entries per queue file before creating a new file (default 5000)
  -limit   integer Default batch limit for consumers (default -1)
  -ballast integer Garbage collection memory ballast size in bytes (default 1073741824)
  -prometheus boolean Enable prometheus metrics (default true)
Volumes:

Volumes will be written to in the order given and recovered from in the reverse order. Consumer requests are read from the last volume. For this reason it's recommended to use a local volume last.

For instance, given

docker run haraqa/haraqa /vol1 /vol2 /vol3

When a client produces a message, it will be written to /vol1, then /vol2, then /vol3. When a client consumes a message, it will be read from /vol3.

During recovery, if data exists in /vol3 it will be replicated to volumes /vol1 and /vol2. If /vol3 is empty, /vol2 will be replicated to /vol1 and /vol3.

Client

go get github.com/haraqa/haraqa

Contributing

We want this project to be the best it can be and all feedback, feature requests or pull requests are welcome.

License

MIT © 2019 haraqa and contributors. See LICENSE for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].