mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 03:13:15 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			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
 | 
						|
}
 |