gearman-java icon indicating copy to clipboard operation
gearman-java copied to clipboard

Java Gearman client and Netty-based server with multi-backend support (currently memory, Redis and PostgreSQL). More features coming including clustering support

Gearman Java Implementation

Test

Build
Status

An implementation of the gearman protocol server, client, and worker in Java. Features include:

  • Pluggable persistent storage mechanism currently supporting:
    • PostgreSQL
    • Redis
    • Memory-only
  • Web-based UI dashboard
  • Metrics using java metrics
  • Multi-threaded server using Netty for high-performance network I/O
  • High-performance - on a single m3.2xlarge EC2 instance with 8 on-box Ruby clients it has achieved over 11,000 jobs per second with in-memory storage

Getting Started

Quick start:

  1. Download the latest pre-built SNAPSHOT release from the Sonatype snapshots repository
  2. Run java -jar gearman-server-VERSION.jar
  3. This will default to port 4730 and memory-only persistence, with snapshotting and the web interface listening on port 8080

If you want to use more advanced features, see the example config.yml files in the gearman-server sub-project

Web Interface

Some of the issues that I've run into in the past have been related to visibility into job queues. To address this, I've added a web management console that lets you see the state of the system. For small installations this is a nice option because it doesn't require you to setup or have any external monitoring systems. Some screenshots here:

Main Dashboard

Web dashboard

All Queues

All Queues

Per-Queue Status

Queue overview

Contributing

Feel free to fork and submit pull requests, or test and submit bug reports.

Author

John Ewart http://johnewart.net

Contributors

Some tiny portions of this project leverage code from the java-gearman-service project.