# `Fleet`
[🔗](https://github.com/kuku/fleet/blob/main/lib/fleet.ex#L1)

`Fleet` is a high-throughput, zero-bloat background job processing engine
for Elixir powered by PgQue and Broadway.

## Enqueueing Jobs

    # Direct enqueue
    %{user_id: 123}
    |> MyApp.Workers.WelcomeEmail.new()
    |> Fleet.insert(MyApp.Repo)

    # Within an Ecto transaction (Transactional Outbox)
    Ecto.Multi.new()
    |> Ecto.Multi.insert(:user, user_changeset)
    |> Fleet.insert(:welcome_email, fn %{user: user} ->
      MyApp.Workers.WelcomeEmail.new(%{user_id: user.id})
    end)
    |> MyApp.Repo.transaction()

# `child_spec`

Returns a child specification to start Fleet within a supervision tree.

# `consumer_info`

Returns consumer subscription information for all queues or a specific consumer.

# `dead_letters`

Inspects dead-lettered events for a given queue.

# `dead_letters`

# `dead_letters`

# `get_default_repo`

Returns the default repository configured for Fleet via `config :fleet, repo: MyApp.Repo`.

# `get_default_repo!`

Returns the default repository or raises an `ArgumentError`.

# `insert`

```elixir
@spec insert(Fleet.Job.t()) :: {:ok, Fleet.Job.t()} | {:error, term()}
```

Inserts a `Fleet.Job` into the queue using the default configured repository (`config :fleet, repo: MyApp.Repo`).

# `insert`

Inserts a `Fleet.Job` into the queue with options using the default repository,
or inserts using an explicit repository (supports both `insert(repo, job)` and `job |> insert(repo)`).

# `insert`

```elixir
@spec insert(
  Fleet.Client.repo_or_conn() | Ecto.Multi.t(),
  Fleet.Job.t() | term(),
  keyword() | Fleet.Job.t() | (map() -&gt; Fleet.Job.t())
) :: {:ok, Fleet.Job.t()} | {:error, term()} | Ecto.Multi.t()
```

Inserts a `Fleet.Job` directly into the database or appends an operation to an `Ecto.Multi`.

# `insert!`

```elixir
@spec insert!(Fleet.Job.t()) :: Fleet.Job.t()
```

Inserts a `Fleet.Job` directly into the queue using the default repository, raising on failure.

# `insert!`

# `insert!`

```elixir
@spec insert!(Fleet.Client.repo_or_conn(), Fleet.Job.t(), keyword()) :: Fleet.Job.t()
```

Inserts a `Fleet.Job` directly into the queue, raising on failure.

# `insert_all`

Inserts multiple `Fleet.Job`s using the default repository.

# `insert_all`

# `insert_all`

```elixir
@spec insert_all(
  Fleet.Client.repo_or_conn() | Ecto.Multi.t(),
  [Fleet.Job.t()] | term(),
  keyword() | [Fleet.Job.t()] | (map() -&gt; [Fleet.Job.t()])
) :: {:ok, [Fleet.Job.t()]} | {:error, term()} | Ecto.Multi.t()
```

Inserts multiple `Fleet.Job`s into their respective queues or appends a batch operation to `Ecto.Multi`.

# `insert_all!`

Inserts multiple `Fleet.Job`s into their respective queues using default repository, raising on failure.

# `insert_all!`

# `insert_all!`

```elixir
@spec insert_all!(Fleet.Client.repo_or_conn(), [Fleet.Job.t()], keyword()) :: [
  Fleet.Job.t()
]
```

Inserts multiple `Fleet.Job`s into their respective queues, raising on failure.

# `overview`

```elixir
@spec overview(Fleet.Client.repo_or_conn() | nil) :: {:ok, map()} | {:error, term()}
```

Returns a consolidated metadata overview across all queues, consumers, DLQs, and retries.
Perfect for web dashboards, LiveView UIs, and monitoring endpoints.

# `pause_inserts`

Disables event insertion into the given queue.

# `pause_inserts`

# `pause_queue`

Pauses the ticker for the given queue.

# `pause_queue`

# `purge_dead_letters`

Purges all dead letter entries for a given queue.

# `purge_dead_letters`

# `queue_info`

Returns detailed metadata for a specific queue or all queues.

# `queue_info`

# `replay_all_dead_letters`

Replays all dead letter entries for a given queue back into its active queue.

# `replay_all_dead_letters`

# `replay_dead_letter`

Replays a single dead letter entry back into its active queue.

# `replay_dead_letter`

# `resume_inserts`

Re-enables event insertion into the given queue.

# `resume_inserts`

# `resume_queue`

Resumes the ticker for the given queue.

# `resume_queue`

# `retry_queue`

Inspects retry/scheduled events for a given queue.

# `retry_queue`

# `retry_queue`

# `wake_up`

Notifies the Broadway producer(s) for the specified queue to wake up immediately.

---

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