akhet 0.1.0
akhet: ^0.1.0 copied to clipboard
Queue dashboard for Maat applications: job runs, throughput, and failed-job recovery.
Akhet #
[akhet — Queue dashboard for Maat applications: job runs, throughput, and failed-job recovery.]
The queue dashboard for Maat applications. Akhet is the horizon: it is where you watch the queue come up.
It records one row per finished job attempt, reads Khepri's own tables live for depth and failures, and renders both through a Vizier panel — one panel, one login, one layout, alongside the rest of the admin.
Application.configure(...)
.withExtensions([akhetExtension]) // the recording half
.create();
Panel(..., extensions: [akhetVizier()]); // the panel half
Two opt-ins on purpose: a worker process wants the recording and has no panel, and the panel is the only half that needs Vizier.
What it shows #
- Queues — pending, reserved, delayed, oldest wait, completions, average runtime and failures, per queue.
- Job runs — every finished attempt, searchable by job, queue and status.
- Failed jobs — Khepri's failed list, with
RetryandForget.
What it does not do #
Akhet observes workers. It does not supervise them, scale them, or restart
them — that belongs to the process supervisor already running the application.
This is the main way it differs from Laravel's Horizon; see
docs/laravel-differences.md.
Install #
maat akhet:install # publishes the two panel views
Add ...akhetMigrations to database/migrations.dart, akhetVizier() to the
panel's extensions:, and a config/akhet.dart:
final akhet = {
'enabled': env('AKHET_ENABLED') == 'true',
'prune_hours': 168,
'ignore_jobs': ['Heartbeat'],
'record_completed': true,
};
Off unless the application says otherwise: a dashboard that turns itself on writes a row per job on the day it is installed.
Keep the table small #
schedule.command('akhet:prune').daily();
A command, never a timer the package starts on its own.
Full guide: docs/akhet.md.