You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.2 KiB
						
					
					
				| package service | |
| 
 | |
| import ( | |
| 	"context" | |
| 	"encoding/json" | |
| 	"fmt" | |
| 
 | |
| 	"github.com/IBM/sarama" | |
| 	"github.com/TremblingV5/DouTok/applications/favorite/misc" | |
| ) | |
| 
 | |
| type favCountConsumerGroup struct{} | |
| 
 | |
| func (m favCountConsumerGroup) Setup(_ sarama.ConsumerGroupSession) error   { return nil } | |
| func (m favCountConsumerGroup) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } | |
| func (m favCountConsumerGroup) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { | |
| 	for msg := range claim.Messages() { | |
| 		fmt.Printf("Message topic:%q partition:%d offset:%d  value:%s\n", msg.Topic, msg.Partition, msg.Offset, string(msg.Value)) | |
| 
 | |
| 		req := FavReqInKafka{} | |
| 		json.Unmarshal(msg.Value, &req) | |
| 
 | |
| 		err := CreateFavoriteInRDB(req.UserId, req.VideoId, req.Op) | |
| 
 | |
| 		if err != nil { | |
| 			// TODO: 写日志 | |
| 			return err | |
| 		} | |
| 
 | |
| 		// 标记,sarama会自动进行提交,默认间隔1秒 | |
| 		sess.MarkMessage(msg, "") | |
| 	} | |
| 	return nil | |
| } | |
| 
 | |
| var group favCountConsumerGroup | |
| 
 | |
| func Consumer4UpdateCount() { | |
| 	for { | |
| 		err := FavCountKafkaConsumer.Consume(context.Background(), []string{misc.FavCountTopicName}, group) | |
| 
 | |
| 		if err != nil { | |
| 			break | |
| 		} | |
| 
 | |
| 	} | |
| 
 | |
| 	_ = FavCountKafkaConsumer.Close() | |
| }
 | |
| 
 |