timebatch

timebatch is a package for batching messages over a time interval.
This can be useful for receiving messages that occur “quickly” and sending them on a slower (constant) interval in batches.

b := timebatch.New(3 * time.Second) // creates a new batcher

// register a receiver to listen for batches of messages
go func() {
	for _, b := range batches {
		fmt.Println(b) // this is a batch of messages
	}
}()

// register a producer to send messages
go func() {
	b.Send(1)
	b.Send(2)
	b.Send(3)
    b.Close() // must be closed once all messages are sent to clean up
}()

// output will look something like: [1, 2, 3]
// as there were only 3 messages sent within the first time interval

GitHub

View Github