How to Implement a Leaky Bucket Rate Limiter in Go

Use the `golang.org/x/time/rate` package to implement a leaky bucket rate limiter in Go.

How to Implement a Leaky Bucket Rate Limiter in Go

Use the golang.org/x/time/rate package to implement a leaky bucket rate limiter in Go.

package main

import (
	"context"
	"fmt"

	"golang.org/x/time/rate"
)

func main() {
	// Allow 2 events per second, with a burst of 4
	limiter := rate.NewLimiter(rate.Limit(2), 4)

	// Wait for permission (blocks if rate exceeded)
	if err := limiter.Wait(context.Background()); err != nil {
		fmt.Println("Rate limit exceeded or context cancelled")
		return
	}
	fmt.Println("Event processed")
}

Install the dependency first: go get golang.org/x/time/rate