A Reliable, Pluggable & Scalable background job processing library for Clojure.
Please refer to the Benchmarking section.
(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-consumer))
(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, Periodic Jobs, 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, Akshay Gupta & AkshatEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close