# Chunks Chunks process jobs in groups based on size or timeout. Use for bulk operations and batched API calls. ```elixir defmodule MyApp.BulkIndexer do use Oban.Pro.Chunk, size: 100, timeout: 5_000 @impl true def process([_ | _] = jobs) do jobs |> Enum.map(& &1.args["document"]) |> MyApp.Search.bulk_index() :ok end end ``` ## Options - `size: 100` — process up to 100 jobs at once (default) - `timeout: 1000` — process after 1 second even if size not reached (default) - `by: [args: :tenant_id]` — partition chunks by field ## Return values ```elixir :ok # All jobs succeeded {:ok, result} # All jobs succeeded with result {:error, reason, failed_jobs} # Some jobs failed, others succeed {:cancel, reason, jobs} # Cancel specific jobs {:snooze, seconds, jobs} # Snooze specific jobs ```