The Next-Level background job processing library for Clojure.
Simple. Pluggable. Reliable. Extensible. Scalable.
Please refer to the Benchmarking section.
;;; Clojure CLI/deps.edn
com.nilenso/goose {:mvn/version "0.5.3"}
;;; Leiningen/Boot
[com.nilenso/goose "0.5.3"]
(ns my-app
(:require
[goose.brokers.rmq.broker :as rmq]
[goose.client :as c]))
(defn my-fn
[arg1 arg2]
(println "my-fn called with" arg1 arg2))
(let [rmq-producer (rmq/new-producer rmq/default-opts)
;; Along with RabbitMQ, Goose supports Redis as well.
client-opts (assoc c/default-opts :broker rmq-producer)]
;; Supply a fully-qualified function symbol for enqueuing.
;; Args to perform-async are variadic.
(c/perform-async client-opts `my-fn "foo" :bar)
(c/perform-in-sec client-opts 900 `my-fn "foo" :bar)
;; When shutting down client...
(rmq/close rmq-producer))
(ns my-worker
(:require
[goose.brokers.rmq.broker :as rmq]
[goose.worker :as w]))
;;; 'my-app' namespace should be resolvable by worker.
(let [rmq-consumer (rmq/new-consumer rmq/default-opts)
;; Along with RabbitMQ, Goose supports Redis as well.
worker-opts (assoc w/default-opts :broker rmq-consumer)
worker (w/start worker-opts)]
;; When shutting down worker...
(w/stop worker) ; Performs graceful shutsdown.
(rmq/close rmq-consumer))
Refer to wiki for Redis, Cron, Error Handling, Monitoring, Production Readiness, etc.
Please open an issue or ping us on #goose @Clojurians slack.
Named after LT Nick 'Goose' Bradshaw, the sidekick to Captain Pete 'Maverick' Mitchell in Top Gun.
Can you improve this documentation? These fine people already did:
akshat, Alisha Mohanty, Akshay Gupta, Shivam, Atharva Raykar & AkshatEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close