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.
		
		
		
		
		
			
		
			
				
					
					
						
							86 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							86 lines
						
					
					
						
							2.3 KiB
						
					
					
				
								package main
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"context"
							 | 
						|
									"log"
							 | 
						|
									"time"
							 | 
						|
								
							 | 
						|
									"github.com/IBM/sarama"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								func main() {
							 | 
						|
									log.Println("=== Testing OffsetFetch with Debug Sarama ===")
							 | 
						|
								
							 | 
						|
									config := sarama.NewConfig()
							 | 
						|
									config.Version = sarama.V2_8_0_0
							 | 
						|
									config.Consumer.Return.Errors = true
							 | 
						|
									config.Consumer.Offsets.Initial = sarama.OffsetOldest
							 | 
						|
									config.Consumer.Offsets.AutoCommit.Enable = true
							 | 
						|
									config.Consumer.Offsets.AutoCommit.Interval = 100 * time.Millisecond
							 | 
						|
									config.Consumer.Group.Session.Timeout = 30 * time.Second
							 | 
						|
									config.Consumer.Group.Heartbeat.Interval = 3 * time.Second
							 | 
						|
								
							 | 
						|
									brokers := []string{"localhost:9093"}
							 | 
						|
									group := "test-offset-fetch-group"
							 | 
						|
									topics := []string{"loadtest-topic-0"}
							 | 
						|
								
							 | 
						|
									log.Printf("Creating consumer group: group=%s brokers=%v topics=%v", group, brokers, topics)
							 | 
						|
								
							 | 
						|
									consumerGroup, err := sarama.NewConsumerGroup(brokers, group, config)
							 | 
						|
									if err != nil {
							 | 
						|
										log.Fatalf("Failed to create consumer group: %v", err)
							 | 
						|
									}
							 | 
						|
									defer consumerGroup.Close()
							 | 
						|
								
							 | 
						|
									ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
							 | 
						|
									defer cancel()
							 | 
						|
								
							 | 
						|
									handler := &testHandler{}
							 | 
						|
								
							 | 
						|
									log.Println("Starting consumer group session...")
							 | 
						|
									log.Println("Watch for 🔍 [SARAMA-DEBUG] logs to trace OffsetFetch calls")
							 | 
						|
								
							 | 
						|
									go func() {
							 | 
						|
										for {
							 | 
						|
											if err := consumerGroup.Consume(ctx, topics, handler); err != nil {
							 | 
						|
												log.Printf("Error from consumer: %v", err)
							 | 
						|
											}
							 | 
						|
											if ctx.Err() != nil {
							 | 
						|
												return
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}()
							 | 
						|
								
							 | 
						|
									// Wait for context to be done
							 | 
						|
									<-ctx.Done()
							 | 
						|
									log.Println("Test completed")
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								type testHandler struct{}
							 | 
						|
								
							 | 
						|
								func (h *testHandler) Setup(session sarama.ConsumerGroupSession) error {
							 | 
						|
									log.Printf("✓ Consumer group session setup: generation=%d memberID=%s", session.GenerationID(), session.MemberID())
							 | 
						|
									return nil
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func (h *testHandler) Cleanup(session sarama.ConsumerGroupSession) error {
							 | 
						|
									log.Println("Consumer group session cleanup")
							 | 
						|
									return nil
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func (h *testHandler) ConsumeClaim(session sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error {
							 | 
						|
									log.Printf("✓ Started consuming: topic=%s partition=%d offset=%d", claim.Topic(), claim.Partition(), claim.InitialOffset())
							 | 
						|
								
							 | 
						|
									count := 0
							 | 
						|
									for message := range claim.Messages() {
							 | 
						|
										count++
							 | 
						|
										log.Printf("  Received message #%d: offset=%d", count, message.Offset)
							 | 
						|
										session.MarkMessage(message, "")
							 | 
						|
								
							 | 
						|
										if count >= 5 {
							 | 
						|
											log.Println("Received 5 messages, stopping")
							 | 
						|
											return nil
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									return nil
							 | 
						|
								}
							 |