更新: Docker のポートに問題があることが判明しました。なぜこの現象が修正されたのかわかりません。
奇妙なエラーに遭遇したと思います。私はSaramaライブラリを使用しており、コンシューマーを正常に作成できます。
func main() {
config = sarama.NewConfig()
config.ClientID = "go-kafka-consumer"
config.Consumer.Return.Errors = true
// Create new consumer
master, err := sarama.NewConsumer("localhost:9092", config)
if err != nil {
panic(err)
}
defer func() {
if err := master.Close(); err != nil {
panic(err)
}
}()
partitionConsumer, err := master.ConsumePartition("myTopic",0,
sarama.OffsetOldest)
if err != nil {
panic(err)
}
}
このコードを分割してメイン ルーチンの外に移動するとすぐに、次のエラーが発生します。
kafka: クライアントが通信可能なブローカーを使い果たしました (クラスターに到達できますか?)
コードを次のように分割しました。以前の main() メソッドは、NewConsumer() というメソッドを持つコンシューマ パッケージに変換し、新しい main() は次のように NewConsumer() を呼び出します。
c := consumer.NewConsumer()
パニックステートメントが次の行でトリガーされ、sarama.NewConsumer
出力されますkafka: client has run out of available brokers to talk to (Is your cluster reachable?)
このようにコードを分割すると、Sarama がコンシューマを作成できなくなるのはなぜですか? Sarama はメインから直接実行する必要がありますか?