Skip to content

ScMofeoluwa/windmill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Windmill

Go Reference Go Report Card codecov License: MIT

A real-time monitoring dashboard for Watermill applications using Redis Streams. Windmill provides visibility into your message streams and Dead Letter Queue (DLQ), allowing you to monitor, debug, and manage failed messages.

Features

  • Stream Monitoring - View all Redis Streams with message counts, memory usage, and activity
  • Dead Letter Queue Management - Inspect, requeue, or delete failed messages
  • Bulk Operations - Requeue all DLQ messages with a single click

Installation

go get github.com/scmofeoluwa/windmill

Quick Start

package main

import (
    "log"
    "net/http"

    "github.com/redis/go-redis/v9"
    "github.com/scmofeoluwa/windmill"
)

func main() {
    rc := redis.NewClient(&redis.Options{Addr: "localhost:6379"})

    wm, err := windmill.New(windmill.Config{
        RedisClient: rc,
        DLQName:     "poison_queue",
    })
    if err != nil {
        log.Fatal(err)
    }

    log.Println("Dashboard running on http://localhost:3000")
    http.ListenAndServe(":3000", wm.Handler())
}

Note

Set WINDMILL_USERNAME and WINDMILL_PASSWORD environment variables for Basic Auth.

See the examples/basic directory for a complete working example.

Framework Integration

Windmill returns a standard http.Handler, making it compatible with any Go router:

// Chi
r.Mount("/windmill", wm.Handler())

// Gin
r.Any("/windmill/*any", gin.WrapH(wm.Handler()))

// Echo
e.Any("/windmill/*", echo.WrapHandler(wm.Handler()))

// Fiber
app.Use("/windmill", adaptor.HTTPHandler(wm.Handler()))

Roadmap

We're actively working on expanding Windmill's capabilities:

  • Consumer Group Monitoring - View consumer groups, pending messages, and lag metrics
  • Message Search & Filtering - Search messages by payload content or metadata
  • Stream Analytics - Throughput graphs and historical metrics
  • Message Replay - Replay specific messages to their original streams
  • Alerting - Configurable alerts for DLQ thresholds and consumer lag

Have a feature request? Open an issue!

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published