robgolding / ex_celery

A Celery task producer for Elixir.
MIT License
7 stars 3 forks source link

ex_celery

Build Status

A Celery task producer for Elixir. Currently only supports delaying tasks, not retrieving their result.

Installation

First, add ex_celery to your mix.exs dependencies:

def deps do
  [{:ex_celery, "~> 0.2.0"}]
end

Then, update your dependencies:

$ mix deps.get

Usage

Add ex_celery to your applications list:

def application do
  [applications: [:ex_celery]]
end

Add configuration parameters for ex_celery using Mix.Config:

use Mix.Config

config :ex_celery,
       broker_url: "amqp://username:password@host/vhost",
       exchange: "custom_exchange"

 Delaying tasks

{:ok, task_id} = ExCelery.apply_async(pid, "my_app.tasks.add", [
    args: [1, 2],
])
{:ok, "f59b0d20-3f2c-46c7-9f01-c787b488e96c"}
{:ok, task_id} = ExCelery.apply_async(pid, "my_app.tasks.high_priority_task", [
    routing_key: "priority.high",
})
{:ok, "7f9ebbe2-a146-11e6-8328-3c15c2e06802"}

Broker support

RabbitMQ is the only broker currently supported. The broker_url is expected to be in the AMQP URI format.

_Note: Celery messages will be encoded in JSON format. You must ensure that json is listed in CELERY_ACCEPT_CONTENT._

 Task options

{:ok, task_id} = ExCelery.apply_async(pid, "my_app.tasks.shorten_url", [
    args: ["http://elixir-lang.org/"],
    kwargs: %{allow_duplicates: true},
    routing_key: "tasks.misc",
])

 Licence

ex_celery is released under the MIT license (see LICENSE).