A simple job queue using OTP.
def deps do
[{:bolt, "~> 0.1.9"}]
end
For more detail see the documentation.
#config.ex
config :bolt,
queues: [{:main, SomeApp.SomeWorker, 10}, {:bg, SomeApp.SomeWorker, 2}],
redis_url: "redis://localhost:6379",
port: 3000
defmodule SomeApp.SomeWorker do
@behaviour Bolt.Worker
def work(params) do
#Do some work!
end
end
# Add a single job to the :bg queue
iex> Bolt.enqueue(:bg, %{"somefield" => 1})
{:ok, [1, 1]}
# Add a collection of jobs to the :bg queue
iex> Bolt.enqueue(:bg, [%{"somefield" => 1}, %{"somefield" => 1}])
[{:ok}]
# Change worker pools
iex> Bolt.Queue.set_worker_max(:bg, 5)
:ok
# Pause a queue
iex> Bolt.Queue.set_worker_max(:bg, 0)
:ok
To use the web interface forward to bolt from your router:
forward "/bolt", to: Bolt.Router
Go to /bolt
to see the dashboard app
GET localhost:3000/
change the port by setting in config or set to nil to disable endpoint.
[
{
"workers": [],
"worker_max": 1,
"status": "running",
"queue_name": "main",
"jobs_remaining": 0
},
{
"workers": [
{
"status": "finished",
"started_at": "2017-07-08T00:04:49.773760Z",
"job_id": "bg:jobs:id69050946-636e-11e7-bd14-784f437e1c56"
}
],
"worker_max": 1,
"status": "running",
"queue_name": "bg",
"jobs_remaining": 167804
}
]
- More Test Coverage
- More Docs