Functions for executing jobs in async, scheduled, batches or cron fashion.
Functions for executing jobs in async, scheduled, batches or cron fashion.
Map of sample configs for producing jobs.
:broker
: Message broker that transfers message from Producer to Consumer.
Given value must implement goose.broker/Broker
protocol.
Message Broker wiki
:queue
: Destination where client produces to & worker consumes from.
Example : goose.defaults/default-queue
:retry-opts
: Configuration for handling Job failure.
Example : goose.retry/default-opts
Error Handling & Retries wiki
Map of sample configs for producing jobs. ### Keys `:broker` : Message broker that transfers message from Producer to Consumer.\ Given value must implement [[goose.broker/Broker]] protocol.\ [Message Broker wiki](https://github.com/nilenso/goose/wiki/Message-Brokers) `:queue` : Destination where client produces to & worker consumes from.\ *Example* : [[goose.defaults/default-queue]] `:retry-opts` : Configuration for handling Job failure.\ *Example* : [[goose.retry/default-opts]]\ [Error Handling & Retries wiki](https://github.com/nilenso/goose/wiki/Error-Handling-&-Retries)
(perform-async opts execute-fn-sym & args)
Enqueues a function for async execution.
client-opts
: Map of :broker
, :queue
& :retry-opts
.
Example : default-opts
execute-fn-sym
: A fully-qualified function symbol called by worker.
Example : `my-fn
, `ns-alias/my-fn
, 'fully-qualified-ns/my-fn
args
: Variadic values provided in given order when invoking execute-fn-sym
.
Given values must be serializable by ptaoussanis/nippy
.
(perform-async client-opts `send-emails "subject" "body" [:user-1 :user-2])
Enqueues a function for async execution. ### Args `client-opts` : Map of `:broker`, `:queue` & `:retry-opts`.\ *Example* : [[default-opts]] `execute-fn-sym` : A fully-qualified function symbol called by worker.\ *Example* : `` `my-fn ``, `` `ns-alias/my-fn ``, `'fully-qualified-ns/my-fn` `args` : Variadic values provided in given order when invoking `execute-fn-sym`.\ Given values must be serializable by `ptaoussanis/nippy`. ### Usage ```Clojure (perform-async client-opts `send-emails "subject" "body" [:user-1 :user-2]) ``` - [Getting Started wiki](https://github.com/nilenso/goose/wiki/Getting-Started).
(perform-at opts instant execute-fn-sym & args)
Schedules a function for execution at given date & time.
client-opts
: Map of :broker
, :queue
& :retry-opts
.
Example : default-opts
^Instant instant
: java.time.Instant
at which job should be executed.
execute-fn-sym
: A fully-qualified function symbol called by worker.
Example : `my-fn
, `ns-alias/my-fn
, 'fully-qualified-ns/my-fn
args
: Variadic values provided in given order when invoking execute-fn-sym
.
Given values must be serializable by ptaoussanis/nippy
.
(let [instant (java.time.Instant/parse "2022-10-31T18:46:09.00Z")]
(perform-at client-opts instant `send-emails "subject" "body" [:user-1 :user-2]))
Schedules a function for execution at given date & time. ### Args `client-opts` : Map of `:broker`, `:queue` & `:retry-opts`.\ *Example* : [[default-opts]] `^Instant instant` : `java.time.Instant` at which job should be executed. `execute-fn-sym` : A fully-qualified function symbol called by worker.\ *Example* : `` `my-fn ``, `` `ns-alias/my-fn ``, `'fully-qualified-ns/my-fn` `args` : Variadic values provided in given order when invoking `execute-fn-sym`.\ Given values must be serializable by `ptaoussanis/nippy`. ### Usage ```Clojure (let [instant (java.time.Instant/parse "2022-10-31T18:46:09.00Z")] (perform-at client-opts instant `send-emails "subject" "body" [:user-1 :user-2])) ``` - [Scheduled Jobs wiki](https://github.com/nilenso/goose/wiki/Scheduled-Jobs)
(perform-batch opts batch-opts execute-fn-sym args-coll)
Enqueues a collection of Jobs for execution in parallel, and tracks them as a single entity. Reports status of a batch via a callback when all Jobs have reached terminal state.
client-opts
: Map of :broker
, :queue
& :retry-opts
.
Example : default-opts
batch-opts
: Map of :callback-fn-sym
, :linger-sec
.
Example : goose.batch/default-opts
execute-fn-sym
: A fully-qualified function symbol called by worker.
Example : `my-fn
, `ns-alias/my-fn
, 'fully-qualified-ns/my-fn
args-coll
: A sequential collection of args. Args must be represented as a
sequential collection too. This collection is iterated upon for creating Batch-Jobs.
Number of Jobs in a Batch is equal to the number of elements in args-coll.
Given values must be serializable by ptaoussanis/nippy
.
Example : [[1] [2] [:foo :bar] [{:some :map}]]
(let [batch-opts goose.batch/default-opts
;; For single-arity functions
args [1 2 3 4 5]
args-coll (map list args)
;; For multi-arity or variadic functions
args-coll (-> []
(goose.batch/construct-args :foo :bar :baz)
(goose.batch/construct-args :fizz :buzz))]
(perform-batch client-opts batch-opts `send-emails args-coll))
Enqueues a collection of Jobs for execution in parallel, and tracks them as a single entity. Reports status of a batch via a callback when all Jobs have reached terminal state. ### Args `client-opts` : Map of `:broker`, `:queue` & `:retry-opts`.\ *Example* : [[default-opts]] `batch-opts` : Map of `:callback-fn-sym`, `:linger-sec`.\ *Example* : [[goose.batch/default-opts]] `execute-fn-sym` : A fully-qualified function symbol called by worker.\ *Example* : `` `my-fn ``, `` `ns-alias/my-fn ``, `'fully-qualified-ns/my-fn` `args-coll` : A sequential collection of args. Args must be represented as a sequential collection too. This collection is iterated upon for creating Batch-Jobs.\ Number of Jobs in a Batch is equal to the number of elements in args-coll.\ Given values must be serializable by `ptaoussanis/nippy`.\ *Example* : `[[1] [2] [:foo :bar] [{:some :map}]]` ### Usage ```Clojure (let [batch-opts goose.batch/default-opts ;; For single-arity functions args [1 2 3 4 5] args-coll (map list args) ;; For multi-arity or variadic functions args-coll (-> [] (goose.batch/construct-args :foo :bar :baz) (goose.batch/construct-args :fizz :buzz))] (perform-batch client-opts batch-opts `send-emails args-coll)) ``` - [Batch Jobs wiki](https://github.com/nilenso/goose/wiki/Batch-Jobs)
(perform-every opts cron-opts execute-fn-sym & args)
Registers a function for recurring execution in cron-jobs style.
perform-every
is idempotent.
If a cron entry already exists with the same name, it will be overwritten with new data.
client-opts
: Map of :broker
, :queue
& :retry-opts
.
Example : default-opts
cron-opts
: Map of :cron-name
, :cron-schedule
, :timezone
.
:cron-name
(Mandatory)
:cron-schedule
(Mandatory)
:timezone
(Optional)
(java.time.ZoneId/getAvailableZoneIds)
execute-fn-sym
: A fully-qualified function symbol called by worker.
Example : `my-fn
, `ns-alias/my-fn
, 'fully-qualified-ns/my-fn
args
: Variadic values provided in given order when invoking execute-fn-sym
.
Given values must be serializable by ptaoussanis/nippy
.
(let [cron-opts {:cron-name "my-cron-job"
:cron-schedule "0 10 15 * *"
:timezone "US/Pacific"}]
(perform-every client-opts cron-opts `send-emails "subject" "body" [:user-1 :user-2]))
Registers a function for recurring execution in cron-jobs style.\ `perform-every` is idempotent.\ If a cron entry already exists with the same name, it will be overwritten with new data. ### Args `client-opts` : Map of `:broker`, `:queue` & `:retry-opts`.\ *Example* : [[default-opts]] `cron-opts` : Map of `:cron-name`, `:cron-schedule`, `:timezone`. - `:cron-name` (Mandatory) - Unique identifier of a cron job - `:cron-schedule` (Mandatory) - Unix-style schedule - `:timezone` (Optional) - Timezone for executing the Job at schedule - Acceptable timezones: `(java.time.ZoneId/getAvailableZoneIds)` - Defaults to system timezone `execute-fn-sym` : A fully-qualified function symbol called by worker.\ *Example* : `` `my-fn ``, `` `ns-alias/my-fn ``, `'fully-qualified-ns/my-fn` `args` : Variadic values provided in given order when invoking `execute-fn-sym`.\ Given values must be serializable by `ptaoussanis/nippy`. ### Usage ```Clojure (let [cron-opts {:cron-name "my-cron-job" :cron-schedule "0 10 15 * *" :timezone "US/Pacific"}] (perform-every client-opts cron-opts `send-emails "subject" "body" [:user-1 :user-2])) ``` - [Cron Jobs wiki](https://github.com/nilenso/goose/wiki/Cron-Jobs)
(perform-in-sec opts sec execute-fn-sym & args)
Schedules a function for execution with a delay of given seconds.
client-opts
: Map of :broker
, :queue
& :retry-opts
.
Example : default-opts
sec
: Delay of Job execution in seconds.
execute-fn-sym
: A fully-qualified function symbol called by worker.
Example : `my-fn
, `ns-alias/my-fn
, 'fully-qualified-ns/my-fn
args
: Variadic values provided in given order when invoking execute-fn-sym
.
Given values must be serializable by ptaoussanis/nippy
.
(perform-in-sec default-opts 300 `send-emails "subject" "body" [:user-1 :user-2])
Schedules a function for execution with a delay of given seconds. ### Args `client-opts` : Map of `:broker`, `:queue` & `:retry-opts`.\ *Example* : [[default-opts]] `sec` : Delay of Job execution in seconds. `execute-fn-sym` : A fully-qualified function symbol called by worker.\ *Example* : `` `my-fn ``, `` `ns-alias/my-fn ``, `'fully-qualified-ns/my-fn` `args` : Variadic values provided in given order when invoking `execute-fn-sym`.\ Given values must be serializable by `ptaoussanis/nippy`. ### Usage ```Clojure (perform-in-sec default-opts 300 `send-emails "subject" "body" [:user-1 :user-2]) ``` - [Scheduled Jobs wiki](https://github.com/nilenso/goose/wiki/Scheduled-Jobs)
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close