https://github.com/rfyiamcool/go-gearman
golang job dispatcher
https://github.com/rfyiamcool/go-gearman
dispatcher gearman
Last synced: 8 months ago
JSON representation
golang job dispatcher
- Host: GitHub
- URL: https://github.com/rfyiamcool/go-gearman
- Owner: rfyiamcool
- Created: 2021-04-15T07:12:57.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-04-15T08:06:55.000Z (over 4 years ago)
- Last Synced: 2025-02-06T13:50:51.290Z (8 months ago)
- Topics: dispatcher, gearman
- Language: Go
- Homepage:
- Size: 39.1 KB
- Stars: 16
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# go-gearman
The shardingkey is hashed to the same queue, each of which is bound to a worker.

## Usage
**init gearman**
```go
gm := gearman.NewGearman(workerNum, queueSize, SetIdleTimeout(1 * time.Minute), SetExceptionCall(func(error)))
```**start/stop**
```go
gm.Start()
defer gm.Stop()
```**Submit**
```go
gm.Submit(shardingKey, func() error)
```## Example
```go
package mainimport (
"fmt"
"sync""github.com/rfyiamcool/go-gearman"
)func main() {
gm := gearman.NewGearman(10, 1000)
gm.Start()
defer gm.Stop()var (
wg = sync.WaitGroup{}
count = 1000000 // 100w
)wg.Add(count)
cb := func() error {
wg.Done()
return nil
}
for i := 0; i < count; i++ {
gm.Submit(fmt.Sprintf("id-%v", i), cb)
}
wg.Wait()
}
```