[英]Kafka There is no leader for this topic-partition as we are in the middle of a leadership election
剛開始學習卡夫卡。 我正在嘗試設置一個包含 2 個代理的小型 kafka 集群。 當兩個代理都啟動時,我成功地向我的主題發送消息。 我想在 2 個代理之一完成時測試我的集群的行為。 我使用 docker stop kafka1 停止了我的主要代理(Kafka1),然后我嘗試向我的集群發送一條消息,以查看我的生產者是否能夠理解他需要發送到 kafka2,因為 kafka1 已關閉。
但是我不斷收到以下錯誤:
{"level":"ERROR","timestamp":"2022-07-19T18:59:46.891Z","logger":"kafkajs","message":"[Connection] 響應元數據(key: 3, version : 6)","broker":"localhost:39092","clientId":"my-app","error":"這個主題分區沒有領導,因為我們正在進行領導選舉" ,"correlationId":1,"size":144}
以下是我的生產者代碼:
const kafka = new Kafka({
clientId: 'my-app',
brokers: ['localhost:29092', 'localhost:39092'],
})
const producer = kafka.producer({ createPartitioner: Partitioners.LegacyPartitioner })
await producer.connect()
await producer.send({
topic: 'coverageEvolved',
messages: [
{ value: JSON.stringify(bodyActiveMq), key: bodyActiveMq[0].roamPartner},
],
})
await producer.disconnect()
以下是我的 docker-compose-file:
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
restart: unless-stopped
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 22181:2181
volumes:
- ./zookeeper/data:/var/lib/zookeeper/data
kafka-1:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- 29092:29092
restart: unless-stopped
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-
1:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
volumes:
- ./kafka1/data:/var/lib/kafka/data
kafka-2:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- 39092:39092
restart: unless-stopped
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:9092,PLAINTEXT_HOST://localhost:39092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
volumes:
- ./kafka2/data:/var/lib/kafka/data
如果您沒有以其他方式創建主題,Kafka 將默認創建代碼中使用的coverageEvolved
主題,其中只有一個副本和一個分區。
如果您終止托管該副本的代理,則將沒有可以生成的同步副本領導者。
您可以使用 Kafkajs 創建主題。
另外值得一提的是,有一個只有一個副本的事務主題(您缺少它的環境變量)。 這主要僅與 Java 客戶端相關,因為從 Kafka 3.0 開始默認啟用事務生產者
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.