31 lines
398 B
Go
Executable File
31 lines
398 B
Go
Executable File
package main
|
|
|
|
import (
|
|
"github.com/segmentio/kafka-go"
|
|
)
|
|
|
|
type SimpleBalancer struct {
|
|
N, P int
|
|
}
|
|
|
|
func (ob *SimpleBalancer) Balance(msg kafka.Message, partitions ...int) int {
|
|
if len(partitions) == 1 {
|
|
return 0
|
|
}
|
|
if ob.N < 100 {
|
|
ob.N++
|
|
return partitions[ob.P]
|
|
}
|
|
|
|
if ob.P+1 < len(partitions) {
|
|
ob.P++
|
|
ob.N = 0
|
|
|
|
} else {
|
|
ob.P = 0
|
|
ob.N = 0
|
|
}
|
|
ob.N++
|
|
return partitions[ob.P]
|
|
}
|