Heim > Backend-Entwicklung > Golang > „Ungültiger Replikationsfaktor' im Convergence Kafka Go-Client

„Ungültiger Replikationsfaktor' im Convergence Kafka Go-Client

王林
Freigeben: 2024-02-14 10:30:09
nach vorne
915 Leute haben es durchsucht

汇合 Kafka Go 客户端中的“无效复制因子”

php-Editor Xigua bringt Ihnen heute einen Artikel über den „ungültigen Replikationsfaktor“ im Kafka Go-Client. Kafka ist eine leistungsstarke, skalierbare verteilte Stream-Verarbeitungsplattform, während Go eine prägnante und effiziente Programmiersprache ist. Dieser Artikel konzentriert sich auf das Problem des „ungültigen Replikationsfaktors“, das im Kafka Go-Client auftritt, untersucht seine Ursachen und Lösungen und hilft den Lesern, diese häufige technische Herausforderung besser zu verstehen und zu bewältigen. Ungültige Replikationsfaktoren können zu Dateninkonsistenzen und Leistungseinbußen führen. Daher ist es für Kafka-Benutzer wichtig zu verstehen, wie sie mit diesem Problem umgehen können. Lassen Sie uns gemeinsam in die Tiefe gehen!

Frageninhalt

Ich bin neu bei Kafka und versuche, mein Projekt zu starten. Ich habe dies in meiner docker-compose.yml

version: '3'

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.3.0
    container_name: zookeeper
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  broker:
    image: confluentinc/cp-kafka:7.3.0
    container_name: broker
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
Nach dem Login kopieren

Dann führe ich meine main.go-Datei mit Produzenten und Konsumenten und einigen Scheinthemen aus.

package main

import (
    "fmt"
    "log"
    "time"

    "github.com/confluentinc/confluent-kafka-go/kafka"
)



func main()  {
    topic := "HVSE"
    p, err := kafka.NewProducer(&kafka.ConfigMap{
        "bootstrap.servers": "localhost:9092",
        "client.id": "foo",
        "acks": "all",
    })
    go func() {
        consumer, err := kafka.NewConsumer(&kafka.ConfigMap{
            "bootstrap.servers":    "localhost:9092",
            "group.id":             "foo",
            "auto.offset.reset":    "smallest",
        })

        if err != nil {
            log.Fatal(err)
        }

        err = consumer.Subscribe(topic, nil)

        if err != nil {
            log.Fatal(err)
        }

        for {
                ev := consumer.Poll(100)
                // fmt.Println(ev)
                switch e := ev.(type) {
                case *kafka.Message:
                        fmt.Printf("consumed message from queue: %s\n", string(e.Value))
                case *kafka.Error:
                        fmt.Printf("%v\n", e)
                        // return
                // default:
                //      fmt.Printf("Ignored %v\n", e)
                }
        }
    }()

    deliverch := make(chan kafka.Event, 10000)
    for {
        err = p.Produce(&kafka.Message{
            TopicPartition: kafka.TopicPartition{Topic: &topic, Partition: kafka.PartitionAny},
            Value: []byte("FOO"),
        },
            deliverch,
        )
        if err != nil {
            log.Fatal(err)
        }
    
        <- deliverch
        time.Sleep(time.Second * 1)
    }
}
Nach dem Login kopieren

Wenn ich den Standardwert auskommentiere, komme ich hinein.

Ansonsten erhalte ich diesen Fehler in der Konsole.

2023/09/26 13:45:05 Broker: Invalid replication factor
exit status 1
Nach dem Login kopieren

Meine Kafka- und Zookeeper-Container laufen.

Ich habe die Datei docker-compose.yml geändert, aber es hat nicht geholfen. Ich habe festgestellt, dass mein Consumer.Events() Null ist, aber ich verstehe nicht, warum das passiert

Problemumgehung

Ich habe Ihren Code kopiert und er ist korrekt, aber das Problem in compose.yml wird nur durch ADVERTISED_LISTENERS angepasst

Stattdessen:

KAFKA_ADVERTISED_LISTENERS:PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
Nach dem Login kopieren

Verwenden Sie dies:

KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt von„Ungültiger Replikationsfaktor' im Convergence Kafka Go-Client. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage