# honker v0.1.4 - Table of Contents

> Durable queues, streams, pub/sub, and scheduler on SQLite. Thin wrapper around the Honker loadable extension.

## Modules

- [Honker](Honker.md): Elixir binding for [Honker](https://honker.dev) — a SQLite-native
task runtime.
- [Honker.Database](Honker.Database.md): A Honker database handle. Wraps the Exqlite reference + a
registry of per-queue options (visibility timeout, max attempts).

- [Honker.Job](Honker.Job.md): A claimed unit of work. Use the lifecycle helpers
(`ack/2`, `retry/4`, `fail/3`, `heartbeat/3`) to close it out.
- [Honker.Lock](Honker.Lock.md): Advisory locks on top of `honker_lock_*` SQL functions. Elixir has no
RAII, so the caller manages the lock lifetime explicitly
- [Honker.Outbox](Honker.Outbox.md): Transactional side-effect delivery built on a reserved Honker queue.
- [Honker.Queue](Honker.Queue.md): Named queue operations. All methods take a `Honker.Database` and
the queue name as the first two args.
- [Honker.Scheduler](Honker.Scheduler.md): Time-trigger task registry. Thin wrapper over `honker_scheduler_*`
SQL functions, plus a blocking `run/3` loop with leader election via
the `honker-scheduler` advisory lock.
- [Honker.Stream](Honker.Stream.md): Append-only topic log with named-consumer offsets. Thin wrapper over
`honker_stream_*` SQL functions.
- [Honker.StreamEvent](Honker.StreamEvent.md): An event read from a Honker stream. `payload` is decoded from JSON;
`key` is `nil` when the event was published without a partition key.

- [Honker.Transaction](Honker.Transaction.md): A SQLite transaction handle. Wraps the underlying Exqlite connection
while a transaction is open so `*_tx` helpers (e.g.
`Honker.Queue.enqueue_tx/5`, `Honker.Stream.publish_tx/4`) can take
it as an explicit parameter.

