# Faktory Worker Ex

Elixir worker for Faktory ([blog]( ([github](

## Installation

The package can be installed by adding `faktory_worker_ex` to your list of dependencies in `mix.exs`:
def deps do
    {:faktory_worker_ex, "~> 0.0"}

## Quickstart

# For enqueuing jobs
defmodule MyFaktoryClient do
  use Faktory.Client, otp_app: :my_cool_app

# For processing jobs
defmodule MyFaktoryWorker do
  use Faktory.Worker, otp_app: :my_cool_app

# You must add them to your app's supervision tree
defmodule MyCoolApp.Application do
  use Application

  def start(_type, _args) do
    children = [MyFaktoryClient, MyFaktoryWorker]
    Supervisor.start_link(children, strategy: :one_for_one)

defmodule MyGreeterJob do
  use Faktory.Job

  def perform(greeting, name) do
    IO.puts("#{greeting}, #{name}!!")

# List argument must match the arity of MyGreeterJob.perform
MyGreeterJob.perform_async(["Hello", "Genevieve"])

## Starting the worker

`mix faktory`

You should see logging output and the above job being processed.

`mix faktory -h`

To see command line options that can override in-app configuration.

`iex -S mix faktory`

If you want to debug your jobs using `IEx.pry`.

## Configuration

Compile-time config is done with `Mix.Config`.

Run-time config is done with environment variables and/or an `init/1` callback.

See documentation on:
* [Client](
* [Worker](

## Running a Faktory server

To run this readme's example, you need to run a Faktory server.

Easiest way is with Docker:
docker run --rm -p 7419:7419 -p 7420:7420 contribsys/faktory:latest -b :7419 -w :7420

You should be able to go to [http://localhost:7420](http://localhost:7420) and see the web ui.

## Features

* Middleware
* Connection pooling (for clients)
* Support for multiple Faktory servers
* Faktory server authentication and TLS support
* Comprehensive documentation
* Comprehensive supervision tree
* Decent integration tests

## Missing features

* Responding to `quiet` and `terminate`
* Running without `mix` (e.g. a Distillery release)

## Issues / Questions