78 lines
1.6 KiB
Markdown
78 lines
1.6 KiB
Markdown
# queue
|
|
|
|
[](https://pkg.go.dev/git.belvedersky.ru/queue)
|
|
|
|
|
|
Simple and lightweight queue implementation in Go with optional Dead Letter Queue (DLQ) support.
|
|
|
|
|
|
Repository:
|
|
https://git.belvedersky.ru/belvedersky/queue
|
|
|
|
## Installation
|
|
|
|
go get git.belvedersky.ru/queue
|
|
|
|
## Usage
|
|
|
|
Basic example:
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"git.belvedersky.ru/queue"
|
|
)
|
|
|
|
func main() {
|
|
q := queue.NewQueue
|
|
|
|
q.Push(1)
|
|
q.Push(2)
|
|
|
|
for !q.Empty() {
|
|
item := q.Pop()
|
|
fmt.Println(item)
|
|
}
|
|
}
|
|
|
|
## Dead Letter Queue Example
|
|
|
|
See examples/example_dlq_test.go:
|
|
|
|
mainQ := queue.NewQueue
|
|
dlq := queue.NewQueue
|
|
|
|
mainQ.SetDLQ(dlq)
|
|
|
|
|
|
## Examples
|
|
|
|
Full examples are available in:
|
|
https://git.belvedersky.ru/belvedersky/queue/src/branch/main/examples
|
|
|
|
Includes:
|
|
- examples/example_basic_test.go
|
|
- examples/example_dlq_test.go
|
|
- examples/example_parallel_test.go
|
|
|
|
|
|
## Benchmarks
|
|
```bash
|
|
goos: darwin
|
|
goarch: arm64
|
|
pkg: git.belvedersky.ru/belvedersky/queue
|
|
cpu: Apple M1 Pro
|
|
BenchmarkProduceConsume/workers_1-10 9488 118244 ns/op 8 B/op 1 allocs/op
|
|
BenchmarkProduceConsume/workers_4-10 40800 29371 ns/op 8 B/op 1 allocs/op
|
|
BenchmarkProduceConsume/workers_16-10 163110 7340 ns/op 8 B/op 1 allocs/op
|
|
BenchmarkTryProduce-10 1610434 774.8 ns/op 520 B/op 7 allocs/op
|
|
PASS
|
|
ok git.belvedersky.ru/belvedersky/queue 6.574s
|
|
```
|
|
|
|
|
|
## License
|
|
|
|
MIT
|