/
contract.go
43 lines (36 loc) · 923 Bytes
/
contract.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Package kafka
package kafka
import (
"context"
"time"
"github.com/Shopify/sarama"
)
// Producer represents kafka publisher message topic
type Producer interface {
Publish(ctx context.Context, msg *MessageContext) error
}
// Consumer represents a Sarama consumer consumer interface
type Consumer interface {
Subscribe(*ConsumerContext)
}
type MessageContext struct {
Value string
Key []byte
LogId interface{}
Topic string
Partition int32
Offset int64
TimeStamp time.Time
Verbose bool
}
type ConsumerContext struct {
Handler MessageProcessorFunc
Topics []string
GroupID string
Context context.Context
}
var balanceStrategies = map[string]sarama.BalanceStrategy{
sarama.RoundRobinBalanceStrategyName: sarama.BalanceStrategyRoundRobin,
sarama.RangeBalanceStrategyName: sarama.BalanceStrategyRange,
sarama.StickyBalanceStrategyName: sarama.BalanceStrategySticky,
}