queue is a standalone, self-contained module that wraps tasker as a lemmego-compatible provider. It implements Provider, CommandProvider, RouteProvider, PublishableProvider, and ShutdownProvider interfaces.
import "github.com/lemmego/queue"
func LoadProviders() []app.Provider {
return []app.Provider{
&queue.Provider{}, // auto-configures from app config
}
}That's it. The provider auto-reads database credentials from your existing configs/database.go (same sql.connections.<default> that gormconnector uses). No hardcoded DSN needed.
&queue.Provider{
Config: &queue.Config{
Driver: "redis",
RedisAddr: ":6379",
RoutePrefix: "/background-jobs", // default: "/tasker"
DefaultQueue: "default",
DefaultMaxAttempts: 3,
Workers: map[string]int{"default": 3, "email": 2},
EnableAutoscale: false,
},
}1. Explicit Config fields (highest)
2. App config (published tasker.go + env vars)
3. Sensible defaults (lowest)
TASKER_ROUTE_PREFIX=/jobs
TASKER_TABLE_PREFIX=myapp_
TASKER_QUEUE=default
TASKER_MAX_ATTEMPTS=3
TASKER_HEARTBEAT_SEC=5
TASKER_REQUEUE_SEC=60
TASKER_PRUNE_HOURS=168
TASKER_AUTOSCALE=false- Reads
sql.connections.<default>from app config (same source as gormconnector) - Picks up
driver,database,host,port,user,password - Works with SQLite, MySQL, PostgreSQL out of the box
- Uses
tasker_table prefix,/taskerroute prefix
Skips SQL config entirely — use RedisAddr, RedisPass, RedisDB fields.
- Driver — database connection (SQL or Redis)
- Migration — tables auto-created (
CREATE TABLE IF NOT EXISTS) - Manager — job dispatcher, registered as
tasker.Global()
- Supervisor — worker pool manager (needed by
tasker:work) - Web server — dashboard UI + API at
RoutePrefix
Registered automatically via CommandProvider:
lemmego run tasker:work --queue=default --workers=3Mounted automatically via RouteProvider:
| Prefix | Description |
|---|---|
GET /tasker/ |
Dashboard UI |
GET /tasker/api/* |
JSON API |
POST /tasker/api/* |
Actions (retry, cancel, pause, resume, prune) |
Customize with Config.RoutePrefix:
Config: &Config{RoutePrefix: "/jobs"} // → GET /jobs/api/statsThe provider publishes internal/configs/tasker.go via AddPublishables():
lemmego run publish --tags=configThis creates a config file with env-var-driven defaults for all tasker settings.
github.com/lemmego/tasker— core job systemgithub.com/lemmego/api— lemmego framework interfacesgithub.com/spf13/cobra— CLI commands
No GPA dependency. The driver manages its own connection pool directly.
MIT