# `Celery.AMQP`
[🔗](https://github.com/hacktobeer/celery-elixir/blob/v0.1.0/lib/celery/amqp.ex#L1)

AMQP / Kombu task routing, queue configuration, and task message publishing
(ported from `celery.app.amqp`).

# `build_connection`

```elixir
@spec build_connection(Celery.t() | Celery.Config.t()) :: Kombu.Connection.t()
```

Builds a `%Kombu.Connection{}` for the given `%Celery{}` or `%Celery.Config{}`.

# `create_task_message`

```elixir
@spec create_task_message(
  Celery.t() | Celery.Config.t(),
  String.t(),
  list(),
  map(),
  keyword()
) ::
  Celery.Protocol.task_message()
```

Creates a task message (`as_task_v2` or `as_task_v1`) according to the app's `task_protocol`
setting (or `:protocol` option).

# `default_queue`

```elixir
@spec default_queue(Celery.t() | Celery.Config.t()) :: Kombu.Queue.t()
```

Returns the default `%Kombu.Queue{}` configured for the given `%Celery{}` or `%Celery.Config{}`.

# `queues_for_worker`

```elixir
@spec queues_for_worker(
  Celery.t() | Celery.Config.t(),
  [String.t() | Kombu.Queue.t()] | nil
) :: [
  Kombu.Queue.t()
]
```

Returns the list of `%Kombu.Queue{}` structs for a worker to consume from.

# `resolve_route`

```elixir
@spec resolve_route(Celery.t() | Celery.Config.t(), String.t(), keyword()) :: map()
```

Resolves routing parameters (`exchange`, `routing_key`, `queue`, `serializer`, `compression`, `delivery_mode`, `priority`)
for a task invocation.

# `send_task_message`

```elixir
@spec send_task_message(
  Celery.t() | Celery.Config.t(),
  Celery.Protocol.task_message(),
  keyword()
) ::
  :ok | {:error, term()}
```

Publishes a prepared task message (`%{headers: ..., properties: ..., body: ...}`)
over Kombu using the configured broker connection.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
