I cloned Beanstalkd with Clojure

I just cloned Beanstalkd with clojure and you can find this project on github. It’s a light weight task queue that “producers” could put tasks in and “workers” are blocked to reserve them and process them. It will help you to split expensive operations (sending email, etc) to background.

The features:

  • Almost compatible with Beanstalkd protocol
  • Full support on Beanstalkd verbs: put/reserve/release/bury/kick
  • Persistence with binary write-ahead logs
  • Simple JMX monitoring

The networking layer is based on @ztellman‘s libraries, aleph, lamina and gloss. And I also received great help from him on implementing the protocol with gloss.

This is not my first clojure project but the largest one. I add marginalia in the dev-dependencies, you can generate well formatted code and docs with `lein marg`.

By the way, this project is not well tested. I’m still working on it to find potential issues and to fix them. Do not use it on any production environment before you have carefully gone through the code base. I just made this announcement here to let people know this project if they are interested in this topic.

And always, Any fork/contribution is welcomed.

Clojure client for Beanstalkd forked

Beanstalkd is a distributed task queue written by Keith Rarick. I just forked the clojure client as the original version is no long active. Some features are added:

  • Add commands: stats-tube, stats-job, pause-tube, list-tubes, list-tube-used and list-tubes-watched
  • Use yaml library to decode stats output into clojure data structure.

Use it in your leiningen project:
[org.clojars.sunng/beanstalk "1.0.5"]