github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/test/docker/kafka/kafka.sample.cp.go (about)

     1  package kafka
     2  
     3  // uncomment to test this [Not Working]
     4  
     5  // package main
     6  
     7  // import (
     8  // 	"fmt"
     9  // 	"log"
    10  // 	"os"
    11  // 	"os/signal"
    12  // 	"syscall"
    13  //
    14  //
    15  // 
    16  
    17  // 	"github.com/IBM/sarama"
    18  // 	"github.com/ory/dockertest/v3"
    19  // 	"github.com/ory/dockertest/v3/docker"
    20  // )
    21  
    22  // func main() {
    23  // 	// Create a new pool of Docker containers
    24  // 	pool, err := dockertest.NewPool("")
    25  // 	if err != nil {
    26  // 		log.Fatalf("Could not connect to Docker: %s", err)
    27  // 	}
    28  
    29  // 	// Set up options for Kafka container
    30  // 	options := &dockertest.RunOptions{
    31  // 		Repository: "confluentinc/cp-kafka",
    32  // 		Tag:        "6.2.1",
    33  // 		PortBindings: map[docker.Port][]docker.PortBinding{
    34  // 			"9092/tcp": {
    35  // 				{HostIP: "", HostPort: "9092"},
    36  // 			},
    37  // 		},
    38  // 		Env: []string{
    39  // 			"KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092",
    40  // 			"KAFKA_AUTO_CREATE_TOPICS_ENABLE=false",
    41  // 			"KAFKA_DELETE_TOPIC_ENABLE=true",
    42  // 		},
    43  // 		ExposedPorts: []string{"9092/tcp"},
    44  // 	}
    45  
    46  // 	// Run Kafka container
    47  // 	resource, err := pool.RunWithOptions(options)
    48  // 	if err != nil {
    49  // 		log.Fatalf("Could not start Kafka container: %s", err)
    50  // 	}
    51  // 	defer func() {
    52  // 		// Clean up and remove the Kafka container when done
    53  // 		if err := pool.Purge(resource); err != nil {
    54  // 			log.Fatalf("Could not purge Kafka container: %s", err)
    55  // 		}
    56  // 	}()
    57  
    58  // 	// Wait for Kafka to be ready with an extended timeout
    59  // 	// maxWait := 120 * time.Second // Adjust the timeout as needed
    60  // 	if err := pool.Retry(func() error {
    61  // 		// Set up a Kafka producer and try to produce a message
    62  // 		producer, err := sarama.NewAsyncProducer([]string{"localhost:9092"}, nil)
    63  // 		if err != nil {
    64  // 			log.Printf("Error creating Kafka producer: %v", err)
    65  // 			return err
    66  // 		}
    67  // 		defer func() {
    68  // 			// Close the producer when done
    69  // 			if err := producer.Close(); err != nil {
    70  // 				log.Printf("Error closing Kafka producer: %v", err)
    71  // 			}
    72  // 		}()
    73  
    74  // 		// Produce a test message
    75  // 		producer.Input() <- &sarama.ProducerMessage{Topic: "test", Value: sarama.StringEncoder("test-message")}
    76  
    77  // 		// Check if the message was successfully produced
    78  // 		select {
    79  // 		case err := <-producer.Errors():
    80  // 			log.Printf("Error producing message: %v", err)
    81  // 			return err.Err
    82  // 		case <-producer.Successes():
    83  // 			log.Println("Kafka is ready.")
    84  // 			return nil
    85  // 		}
    86  // 	}); err != nil {
    87  // 		log.Fatalf("Could not connect to Kafka: %s", err)
    88  // 	}
    89  
    90  // 	// At this point, Kafka should be running and ready to use.
    91  
    92  // 	// You can use the Sarama Kafka client to interact with Kafka.
    93  // 	// For example, you can create a Kafka producer and consumer and perform operations:
    94  
    95  // 	// Create a Kafka producer
    96  // 	producer, err := sarama.NewAsyncProducer([]string{"localhost:9092"}, nil)
    97  // 	if err != nil {
    98  // 		log.Fatalf("Could not create Kafka producer: %s", err)
    99  // 	}
   100  // 	defer func() {
   101  // 		// Close the producer when done
   102  // 		if err := producer.Close(); err != nil {
   103  // 			log.Printf("Error closing Kafka producer: %v", err)
   104  // 		}
   105  // 	}()
   106  
   107  // 	// Create a Kafka consumer
   108  // 	consumer, err := sarama.NewConsumer([]string{"localhost:9092"}, nil)
   109  // 	if err != nil {
   110  // 		log.Fatalf("Could not create Kafka consumer: %s", err)
   111  // 	}
   112  // 	defer func() {
   113  // 		// Close the consumer when done
   114  // 		if err := consumer.Close(); err != nil {
   115  // 			log.Printf("Error closing Kafka consumer: %v", err)
   116  // 		}
   117  // 	}()
   118  
   119  // 	// Subscribe to a Kafka topic and consume messages
   120  
   121  // 	// Handle signals to gracefully shut down the program
   122  // 	signals := make(chan os.Signal, 1)
   123  // 	signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
   124  // 	<-signals
   125  
   126  // 	fmt.Println("Shutting down Kafka...")
   127  // }