記事ディレクトリ
質問
-
プロジェクトの新しい関数は Kafka を使用する必要があります。同様の関数に従ってコードを記述した後、デバッグのために開発環境に送信します (ローカルに Kafka サービスがありません)。ただし、メッセージは監視できません (ログはあります)。メッセージを送信しています)、エラー ログはありません
-
長い間コードを比較した結果、問題が見つからなかったので、docker を介してローカルの Kafka サービスを提供することにしました
インストール手順
-
docker がローカルにインストールされていること、および docker コマンドがそれを認識できることを確認してください
-
PowerShell を開きます (win10 には PowerShell があります。左下隅で直接検索します)。
-
Zookeeper (Kafka と一致するサービス) をインストールする
docker pull wurstmeister/動物園飼育員
docker run -d --name Zookeeper -p 2181:2181 wurstmeister/zookeeper
- Kafka をインストールする
docker pull wurstmeister/kafka
docker run -d --name kafka --publish 9092:9092 --linkzookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=localhost --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka
- サービスが開始されているか確認する
ドッカーps
注: kafka docker が起動しない場合 (docker ps で再び消滅したことが判明した場合)、コマンドでログを確認できます。
docker ログ -f kafka
Docker サービスを削除して最初からやり直す
- その理由は、kafka メッセージが保存されるためです。消費が成功しなかった場合、アプリケーションの起動後に消費が再ロードされます。
- 消費時に逆シリアル化されますが、生成したメッセージの逆シリアル化が失敗し、再起動するたびにエラーが報告されます。
- kafka のデータを削除する方法がわからないので、サービスを直接再インストールします。
docker rm -fzookeeper
docker rm -f kafka
docker run -d --namezookeeper -p 2181:2181 wurstmeister/zookeeper
docker run -d --name kafka --publish 9092:9092 --linkzookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper :2181 --env KAFKA_ADVERTISED_HOST_NAME=localhost --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka
データはクリーンです
要約する
- Kafkaをローカルに提供した後、メッセージがシリアル化可能なインターフェイスを継承せず、逆シリアル化に失敗したため、ローカルでログを確認したところ、最終的に原因がわかりました。
- メッセージをクリアするには、kafka docker のコマンドを見つける必要があります。rm docker にはまだ時間がかかります。
- メッセージを表示するための UI ツールである国産ソフトウェア Kafka Eagle があり、時間をかけて再インストールすることもできます。これにより、メッセージのリアルタイムのダイナミクスを確認できます (以前は実行されていませんでした)。