https://github.com/mukller/jobqueue
Background job queue backed by SQLite, no external dependencies
https://github.com/mukller/jobqueue
async background-jobs go queue sqlite workers
Last synced: about 16 hours ago
JSON representation
Background job queue backed by SQLite, no external dependencies
- Host: GitHub
- URL: https://github.com/mukller/jobqueue
- Owner: Mukller
- License: mit
- Created: 2026-06-23T13:10:54.000Z (18 days ago)
- Default Branch: main
- Last Pushed: 2026-06-23T14:04:02.000Z (18 days ago)
- Last Synced: 2026-06-23T15:15:34.090Z (18 days ago)
- Topics: async, background-jobs, go, queue, sqlite, workers
- Language: Go
- Size: 15.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
[English](README_EN.md) • **Русский**
# jobqueue
Встроенная очередь фоновых задач для Go. Хранит задачи в SQLite —
никаких Redis, никаких RabbitMQ. Подходит для небольших сервисов и self-hosted.
## Установка
```bash
go get github.com/Mukller/jobqueue
```
## Быстрый старт
```go
q, _ := jobqueue.New("jobs.db", jobqueue.Options{Workers: 4})
defer q.Close()
q.Register("email", func(ctx context.Context, payload []byte) error {
var data EmailPayload
json.Unmarshal(payload, &data)
return sendEmail(data)
})
q.Start()
q.Enqueue(ctx, jobqueue.Job{
Type: "email",
Payload: mustJSON(EmailPayload{To: "user@example.com"}),
Priority: 10,
})
```
## Что умеет
- Персистентные задачи в SQLite (переживают перезапуски)
- Приоритеты (0–100, меньше = выше)
- Автоматические повторы с экспоненциальной задержкой
- Параллельные воркеры
- Отложенный запуск (`RunAt`)
- Таймаут и дедлайн на уровне задачи
- HTTP API для мониторинга
## HTTP мониторинг
```bash
curl http://localhost:8081/jobs
curl -X POST http://localhost:8081/retry-stalled
```