Skip to content

openstatusHQ/openqueue

Repository files navigation

OpenQueue

A simple HTTP message queue written in Go. It accepts tasks via a Connect RPC API and executes HTTP requests with configurable retry logic.

Features

  • HTTP-based task queue with Connect RPC API
  • Configurable retry logic with exponential backoff
  • SQLite storage (pure Go, no CGO required)
  • Multiple named queues support
  • Task execution status tracking

Prerequisites

  • Go 1.21+
  • Just (optional, for convenience commands)

Quick Start

  1. Install dependencies

    just init
  2. Configure your queues in openqueue.yaml:

    queues:
      - name: my_queue
        db: my_queue
        retry: 3
  3. Start the server

    just dev

    Or build and run manually:

    go build -o ./tmp/main ./cmd/root.go
    ./tmp/main server --port 8080 --config openqueue.yaml

Configuration

Create an openqueue.yaml file:

queues:
  - name: my_queue
    db: my_queue   # SQLite database name (stored in ./data/)
    retry: 3       # Max retry attempts

API Usage

Create a Task

curl \
  --header 'Content-Type: application/json' \
  --data '{"queue_name": "my_queue", "task":{"url":"http://example.com/webhook", "method":"GET"}}' \
  http://localhost:8080/api.v1.QueueService/CreateTask

Get Task Status

curl \
  --header 'Content-Type: application/json' \
  --data '{"queue_name": "my_queue", "taskId":"<task-id>"}' \
  http://localhost:8080/api.v1.QueueService/GetTask

Development

# Development with hot reload
just dev

# Build
just build

# Run tests
go test ./...

# Update dependencies
just update

# Generate protobuf code
buf generate

Project Structure

cmd/              # CLI entry points
pkg/
  api/apiv1/     # Connect RPC handlers (CreateTask, GetTask)
  config/        # YAML configuration loading
  database/      # SQLite database layer
  server/        # HTTP server setup with chi router
  task_runner/   # Task execution with retry logic
proto/           # Protocol buffer definitions
data/            # SQLite database files (created at runtime)

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published