mirror of
https://github.com/crazybber/go-pattern-examples.git
synced 2024-11-23 04:16:02 +03:00
32 lines
1016 B
Markdown
32 lines
1016 B
Markdown
|
batcher
|
||
|
=======
|
||
|
|
||
|
[![Build Status](https://travis-ci.org/eapache/go-resiliency.svg?branch=master)](https://travis-ci.org/eapache/go-resiliency)
|
||
|
[![GoDoc](https://godoc.org/github.com/eapache/go-resiliency/batcher?status.svg)](https://godoc.org/github.com/eapache/go-resiliency/batcher)
|
||
|
[![Code of Conduct](https://img.shields.io/badge/code%20of%20conduct-active-blue.svg)](https://eapache.github.io/conduct.html)
|
||
|
|
||
|
The batching resiliency pattern for golang.
|
||
|
|
||
|
Creating a batcher takes two parameters:
|
||
|
- the timeout to wait while collecting a batch
|
||
|
- the function to run once a batch has been collected
|
||
|
|
||
|
You can also optionally set a prefilter to fail queries before they enter the
|
||
|
batch.
|
||
|
|
||
|
```go
|
||
|
b := batcher.New(10*time.Millisecond, func(params []interface{}) error {
|
||
|
// do something with the batch of parameters
|
||
|
return nil
|
||
|
})
|
||
|
|
||
|
b.Prefilter(func(param interface{}) error {
|
||
|
// do some sort of sanity check on the parameter, and return an error if it fails
|
||
|
return nil
|
||
|
})
|
||
|
|
||
|
for i := 0; i < 10; i++ {
|
||
|
go b.Run(i)
|
||
|
}
|
||
|
```
|