All Projects → kavehmz → Queue

kavehmz / Queue

Licence: mit
A Go queue manager on top of Redis

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Queue

Mail
Library to send e-mails over different transports and protocols (like SMTP and IMAP) using immutable messages and streams. Also includes SMTP server.
Stars: ✭ 399 (+439.19%)
Mutual labels:  redis, queue
Arq
Fast job queuing and RPC in python with asyncio and redis.
Stars: ✭ 695 (+839.19%)
Mutual labels:  redis, queue
Taskq
Golang asynchronous task/job queue with Redis, SQS, IronMQ, and in-memory backends
Stars: ✭ 555 (+650%)
Mutual labels:  redis, queue
Redisson
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Stars: ✭ 17,972 (+24186.49%)
Mutual labels:  redis, queue
Yii2 Queue
Yii2 Queue Extension. Supports DB, Redis, RabbitMQ, Beanstalk and Gearman
Stars: ✭ 977 (+1220.27%)
Mutual labels:  redis, queue
Saea
SAEA.Socket is a high-performance IOCP framework TCP based on dotnet standard 2.0; Src contains its application test scenarios, such as websocket,rpc, redis driver, MVC WebAPI, lightweight message server, ultra large file transmission, etc. SAEA.Socket是一个高性能IOCP框架的 TCP,基于dotnet standard 2.0;Src中含有其应用测试场景,例如websocket、rpc、redis驱动、MVC WebAPI、轻量级消息服务器、超大文件传输等
Stars: ✭ 318 (+329.73%)
Mutual labels:  redis, queue
Node Celery
Celery client for Node.js
Stars: ✭ 648 (+775.68%)
Mutual labels:  redis, queue
Lightbus
RPC & event framework for Python 3
Stars: ✭ 149 (+101.35%)
Mutual labels:  redis, queue
Sidekiq Job Php
Push and schedule jobs to Sidekiq from PHP
Stars: ✭ 34 (-54.05%)
Mutual labels:  redis, queue
Quedis
Quedis - redis queue for bosses
Stars: ✭ 31 (-58.11%)
Mutual labels:  redis, queue
Redis Smq
A simple high-performance Redis message queue for Node.js.
Stars: ✭ 230 (+210.81%)
Mutual labels:  redis, queue
Qutee
PHP Background Jobs (Tasks) Manager
Stars: ✭ 63 (-14.86%)
Mutual labels:  redis, queue
Flask Rq2
A Flask extension for RQ.
Stars: ✭ 176 (+137.84%)
Mutual labels:  redis, queue
Huey
a little task queue for python
Stars: ✭ 3,761 (+4982.43%)
Mutual labels:  redis, queue
Phive Queue
$queue->push('I can be popped off after', '10 minutes');
Stars: ✭ 161 (+117.57%)
Mutual labels:  redis, queue
Machinery
Machinery is an asynchronous task queue/job queue based on distributed message passing.
Stars: ✭ 5,821 (+7766.22%)
Mutual labels:  redis, queue
Simpleue
PHP queue worker and consumer - Ready for AWS SQS, Redis, Beanstalkd and others.
Stars: ✭ 124 (+67.57%)
Mutual labels:  redis, queue
Delayer
🌶️ 基于 Redis 的延迟队列中间件,采用 Golang 开发,支持 PHP、Golang 等多种语言客户端
Stars: ✭ 145 (+95.95%)
Mutual labels:  redis, queue
Fennel
A task queue library for Python and Redis
Stars: ✭ 24 (-67.57%)
Mutual labels:  redis, queue
Yii Queue
Queue extension for Yii 3.0
Stars: ✭ 38 (-48.65%)
Mutual labels:  redis, queue

Queue

Go Lang GoDoc Build Status Coverage Status Go Report Card Gitter

A Go library for managing queues on top of Redis. It is based on a hiring exercise but later I found it useful for myself in a custom task processing project. I thought it might be useful in general.

Installation

$ go get github.com/kavehmz/queue

Usage

package main

import (
	"fmt"
	"time"

	"github.com/kavehmz/queue"
)

func main() {
	var q queue.Queue
	q.Urls([]string{"redis://localhost:6379"})
	q.AddTask(1, "start")
	q.AddTask(2, "start")
	q.AddTask(1, "stop")
	q.AddTask(2, "stop")
	analyzer := func(id int, task chan string, success chan bool) {
		for {
			select {
			case msg := <-task:
				fmt.Println(id, msg)
				if msg == "stop" {
					success <- true
					return
				}
			case <-time.After(2 * time.Second):
				fmt.Println("no new events for 2 seconds for ID", id)
				success <- false
				return
			}
		}
	}
	exitOnEmpty := func() bool {
		return true
	}
	q.AnalysePool(1, exitOnEmpty, analyzer)
}

Approach

Focus of this design is mainly horizontal scalability via concurrency, partitioning and fault-detection.

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].