All Projects → yerbieinc → yerbie

yerbieinc / yerbie

Licence: Apache-2.0 License
A blazing fast job queue built for ease of use and scalability

Programming Languages

java
68154 projects - #9 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to yerbie

Go Quartz
Simple, zero-dependency scheduling library for Go
Stars: ✭ 118 (+637.5%)
Mutual labels:  scheduler, job-scheduler, job-queue
Workq
Job server in Go
Stars: ✭ 1,546 (+9562.5%)
Mutual labels:  queue, scheduler, job-scheduler
Bull
Premium Queue package for handling distributed jobs and messages in NodeJS.
Stars: ✭ 11,748 (+73325%)
Mutual labels:  queue, scheduler, job-queue
Resque
Resque is a Redis-backed Ruby library for creating background jobs, placing them on multiple queues, and processing them later.
Stars: ✭ 9,031 (+56343.75%)
Mutual labels:  queue, job-scheduler, job-queue
orkid-node
Reliable and modern Redis Streams based task queue for Node.js 🤖
Stars: ✭ 61 (+281.25%)
Mutual labels:  queue, job-scheduler, job-queue
Swiftqueue
Job Scheduler for IOS with Concurrent run, failure/retry, persistence, repeat, delay and more
Stars: ✭ 276 (+1625%)
Mutual labels:  queue, scheduler, job-scheduler
Redis Smq
A simple high-performance Redis message queue for Node.js.
Stars: ✭ 230 (+1337.5%)
Mutual labels:  queue, job-queue
Specification
OpenMessaging Specification
Stars: ✭ 242 (+1412.5%)
Mutual labels:  queue, asynchronous
tasq
A simple task queue implementation to enqeue jobs on local or remote processes.
Stars: ✭ 83 (+418.75%)
Mutual labels:  queue, job-scheduler
python-asynchronous-tasks
😎Asynchronous tasks in Python with Celery + RabbitMQ + Redis
Stars: ✭ 37 (+131.25%)
Mutual labels:  queue, asynchronous
agendash-v2
A modern, secure, and reliable dashboard for Agenda with search and pagination capabilities written in vue.js
Stars: ✭ 27 (+68.75%)
Mutual labels:  job-scheduler, job-queue
joobq
JoobQ is a fast, efficient asynchronous reliable job queue and job scheduler library processing. Jobs are submitted to a job queue, where they reside until they are able to be scheduled to run in a computing environment.
Stars: ✭ 26 (+62.5%)
Mutual labels:  queue, scheduler
Flask Rq2
A Flask extension for RQ.
Stars: ✭ 176 (+1000%)
Mutual labels:  queue, scheduler
Phive Queue
$queue->push('I can be popped off after', '10 minutes');
Stars: ✭ 161 (+906.25%)
Mutual labels:  queue, scheduler
nest-queue
Queue manager for NestJS Framework for Redis (via bull package)
Stars: ✭ 69 (+331.25%)
Mutual labels:  queue, job-scheduler
reactr
Function scheduler for Go & WebAssembly
Stars: ✭ 264 (+1550%)
Mutual labels:  scheduler, job-scheduler
gronx
Lightweight, fast and dependency-free Cron expression parser (due checker), task scheduler and/or daemon for Golang (tested on v1.13 and above) and standalone usage
Stars: ✭ 206 (+1187.5%)
Mutual labels:  scheduler, job-scheduler
openmessaging.github.io
OpenMessaging homepage
Stars: ✭ 12 (-25%)
Mutual labels:  queue, asynchronous
celery.node
Celery task queue client/worker for nodejs
Stars: ✭ 164 (+925%)
Mutual labels:  queue, job-queue
Exq
Job processing library for Elixir - compatible with Resque / Sidekiq
Stars: ✭ 1,218 (+7512.5%)
Mutual labels:  queue, job-queue

Yerbie

CI Release

Yerbie is a job queue and scheduler backed by Redis. Yerbie is used for:

  • Distributing work across threads or machines
  • Scheduling code to run sometime in the future
  • Retrying failures asynchronously

... and more! To learn more about Yerbie, go to the official Yerbie website.

This repository contains code for the Yerbie server. The Yerbie server manages job data, queues and job schedules in Redis while exposing an API for clients to interface with Yerbie.

Yerbie API

The following describes the Yerbie API with sample HTTP requests. Client libraries will send these requests to interact with Yerbie, however client libraries are still responsible for also handing errors, serializing and deserializing job data, as well as implementing polling and running jobs from the Yerbie server.

Create Job

This creates a job to be scheduled by Yerbie with a certain delay to a specific queue.

Body JSON Parameters:

  • delaySeconds - amount of seconds to delay the job before it becomes available in the queue
  • jobData - serialized job payload string.
  • queue - queue name for which this job should go to.
  • jobToken - the client generated job token.
curl -H "Content-Type: application/json" -X POST -d '{JSON_BODY}' localhost:5865/jobs/schedule

Sample Request

  curl -H "Content-Type: application/json" -X POST -d '{"jobData":"JOB_DATA","delaySeconds":5,"queue":"high_priority_queue","jobToken":"token"}' localhost:5865/jobs/schedule 

Sample Response

  {"jobToken":"token","queue":"high_priority_queue","jobData":"JOB_DATA","delaySeconds":5}

Reserve Job

This requests a job from Yerbie to indicate that it is being processed by a client. Yerbie will mark this job as running, and the client must tell Yerbie that it has finished with the job, otherwise Yerbie will enqueue the job again after 10 seconds.

curl -X POST "localhost:5865/jobs/reserve/{queue_name}"

Sample Request

  curl -X POST "localhost:5865/jobs/reserve/high_priority_queue"

Sample Response

  {"delaySeconds":5,"jobData":"JOB_DATA","queue":"high_priority_queue","jobToken":"token"}

Finish Job

This tells Yerbie that the client has finished processing the job. Yerbie will not enqueue the job again.

  curl -X POST "localhost:5865/jobs/finished/{token}"

Sample Request

  curl -X POST "localhost:5865/jobs/finished/token"

Sample Response

  {"jobToken":"token"}

Delete Job

This will delete a job that hasn't already been put onto a queue. If the job is already on a queue, it will not be deleted.

  curl -X POST "localhost:5865/jobs/delete/{token}"

Sample Request

  curl -X POST "localhost:5865/jobs/delete/token"

Sample Response

  {"jobToken":"token"}

Local Development

See DEVELOPING.md.

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