Skip to content

floatdrop/batchan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BatChan

CI Go Report Card Go Reference License: MIT

A lightweight Go library for batching values from a channel with support for size-based and optional timeout-based flushing.

Features

  • Batch items from a channel based on size
  • Flush batches after a timeout, even if not full
  • Supports context cancellation with WithContext option
  • Zero-dependency, idiomatic Go

Installation

go get github.com/floatdrop/batchan

Usage

package main

import (
	"fmt"
	"time"

	"github.com/floatdrop/batchan"
)

func main() {
	input := make(chan string, 5)
	batches := batchan.New(input, 3)

	go func() {
		inputs := []string{"A", "B", "C", "D", "E"}
		for _, v := range inputs {
			input <- v
		}
		close(input)
	}()

	for v := range batches {
		fmt.Println("Got:", v)
	}

	// Output:
	// Got: [A B C]
	// Got: [D E]
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

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

About

Channel batching

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages