MeWrite Docs

Kafka: BROKER_NOT_AVAILABLE

Kafkaブローカー接続エラーの解決方法

概要

Kafkaブローカーに接続できない場合に発生するエラーです。

エラーメッセージ

KafkaError: BROKER_NOT_AVAILABLE

原因

  1. ブローカーが停止: Kafkaサービスが動作していない
  2. ZooKeeperの問題: ZooKeeper接続エラー
  3. advertised.listeners設定: クライアントからアクセスできないアドレス
  4. ネットワーク設定: ファイアウォールやDNS

解決策

1. ブローカー状態確認

1
2
3
4
5
# Kafkaプロセス確認
jps | grep Kafka

# トピック一覧
kafka-topics.sh --bootstrap-server localhost:9092 --list

2. server.properties設定

1
2
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://your-hostname:9092

3. Node.js接続(KafkaJS)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const { Kafka } = require('kafkajs');

const kafka = new Kafka({
  clientId: 'my-app',
  brokers: ['localhost:9092'],
  retry: {
    initialRetryTime: 100,
    retries: 8
  }
});

4. Docker Compose設定

1
2
3
4
5
6
services:
  kafka:
    image: confluentinc/cp-kafka:latest
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

よくある間違い

  • DockerでlocalにL代わりにサービス名を使用しない
  • advertised.listenersの設定ミス

最終更新: 2025-12-09