open-im-server/pkg/common/mq/consumer.go
2021-12-29 21:45:38 +08:00

41 lines
1.1 KiB
Go

package mq
import "time"
type Consumer interface {
// RegisterMessageHandler is used to register message handler
// any received messages will be passed to handler to process
// once the Consumer started, it is forbidden to register handlers.
RegisterMessageHandler(topic string, handler MessageHandler)
// Start to consume messages
Start() error
}
type MessageHandler interface {
// HandleMessage process received messages,
// if returned error is nil, the message will be auto committed.
HandleMessage(msg *Message) error
}
type MessageHandleFunc func(msg *Message) error
func (fn MessageHandleFunc) HandleMessage(msg *Message) error {
return fn(msg)
}
type Message struct {
Key, Value []byte
Topic string
Partition int32
Offset int64
Timestamp time.Time // only set if kafka is version 0.10+, inner message timestamp
BlockTimestamp time.Time // only set if kafka is version 0.10+, outer (compressed) block timestamp
Headers []*RecordHeader // only set if kafka is version 0.11+
}
type RecordHeader struct {
Key []byte
Value []byte
}