• Stars
    star
    236
  • Rank 164,436 (Top 4 %)
  • Language
    Clojure
  • License
    MIT License
  • Created about 2 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Next-Level background job processing library for Clojure

Goose

Test & Lint Workflow Clojars Project cljdoc badge

The Next-Level background job processing library for Clojure.

Simple. Pluggable. Reliable. Extensible. Scalable.

Performance

Please refer to the Benchmarking section.

Features

Getting Started

Clojars Project

Add Goose as a dependency

;;; Clojure CLI/deps.edn
com.nilenso/goose {:mvn/version "0.4.0"}

;;; Leiningen/Boot
[com.nilenso/goose "0.4.0"]

Client

(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))

Worker

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

Getting Help

Get help on Slack

Please open an issue or ping us on #goose @Clojurians slack.

Companies using Goose in Production

Contributing

Why the name "Goose"?

Named after LT Nick 'Goose' Bradshaw, the sidekick to Captain Pete 'Maverick' Mitchell in Top Gun.

License

Licence

More Repositories

1

postgresql-monitoring

Queries to monitor postgresql
379
star
2

honeysql-postgres

PostgreSQL extension for honeysql
Clojure
192
star
3

ashoka-survey-web

A web application to create and conduct surveys
Ruby
48
star
4

cooperative-agreement

Legal document to incorporate a cooperative in India (structured as a limited liability partnership)
HTML
41
star
5

bean

A Spreadsheet Playground
Clojure
37
star
6

wscljs

A thin and lightweight websocket client for ClojureScript.
Clojure
35
star
7

time-tracker

A time-tracker built for education, fun and eventually profit.
Clojure
14
star
8

vyakaran

the handbook for nilenso
11
star
9

lock_ness_monster

Lock your gem versions down!
Ruby
9
star
10

mailgun

Mailgun API in clojure
Clojure
9
star
11

dotemacs

NOTE: This has been deprecated in favor of https://gitlab.com/nilenso/dotemacs
Emacs Lisp
7
star
12

markdown2clj

Clojure library that converts markdown to Clojure data structures
Clojure
6
star
13

kulu-backend

Service and mobile app for handling corporate reimbursements
Clojure
6
star
14

reviews

Rails app to do internal reviews at Nilenso
Ruby
6
star
15

ashoka-survey-mobile

A web application to create and conduct surveys
JavaScript
6
star
16

clojure-workshop

Clojure
5
star
17

time-tracker-web-nxt

A time tracker application brought to you by ClojureScript with all the goodness of re-frame. This is the front-end to https://github.com/nilenso/time-tracker.
CSS
5
star
18

chronograph

Clojure
4
star
19

indexify

Create an sqlite3 database out of your csv / dsv files for quick querying
Shell
4
star
20

ashoka-user-owner

Ruby
4
star
21

ashoka-survey-mobile-native

Rewrite of ashoka-survey-mobile in native android.
Java
4
star
22

mattermost-slack-mirror-bot

Go
4
star
23

pencil.space

skribbl clone
Elixir
4
star
24

clojure-basics

Code used in our Clojure Basics video series
Clojure
3
star
25

media

Blogs, papers, presentations, videos, etc.
TeX
3
star
26

atharva-onboarding

A place to put Atharva's notes/solutions
Clojure
3
star
27

winter-onboarding-2021

A single repository to contain code for the winter onboarding
Clojure
3
star
28

chinnaswamy

The 'Scalable' URL shortener
Go
3
star
29

protoclj

A protobuf compiler for Clojure wrappers
Clojure
3
star
30

time-tracker-web

Web frontend for time-tracker
JavaScript
2
star
31

markdown2docx

Java/Clojure implementation of a Markdown => Word (.docx) converter
Clojure
2
star
32

sudo_mode

Add a password confirmation page to any controller action in your Rails app.
Ruby
2
star
33

minitest-profiler

Find your slow-running minitest tests.
Ruby
2
star
34

exkubed

A toy project for setting up elixir cluster in kubernetes
Elixir
2
star
35

tronkell

tron in haskell
Haskell
2
star
36

leaflike

A minimal bookmarking service
Clojure
2
star
37

reviews-next

A webapp for reviews
Haskell
2
star
38

nilenso.com

The Nilenso Website
HTML
2
star
39

receive

a file sharing tool
Clojure
2
star
40

dangular3

angular directives for d3
CoffeeScript
2
star
41

do.it

Collaborative To-Do list
Clojure
1
star
42

chronograph-infra

Chronograph Infrastructure
HCL
1
star
43

scrapyard

All your worthless ideas are belong to us.
CSS
1
star
44

fun-english-class

Documentation about running a fun English class for adults!
1
star
45

priyanga-bst

Clojure
1
star
46

chronograph-playbook

Ansible playbook for the Chronograph service
1
star
47

reactjs-workshop15

ReactJS workshop for MetaRefresh 2015
JavaScript
1
star
48

dhobi-seva-nodejs

Laundry app for Vipassana centres (on Node)
JavaScript
1
star
49

logbot

Record all your IRC messages
Ruby
1
star
50

samanga

Work is not separate from life
1
star
51

shahns-onboarding

Clojure
1
star
52

notation

A note-taking app
Ruby
1
star
53

regarde

Clojure
1
star
54

in-browser-evaluator

Evaluate cljs & run some test cases
Clojure
1
star
55

nnts2

The nilenso note taking service. Take 2
Clojure
1
star
56

bugle-forms

Clojure
1
star
57

time-graphs

Clojure
1
star