【kafka】 kafkaの中身が見たいとき

trifectaを使います。

バイナリがあるので、ビルドは必要ありません。

wget https://github.com/ldaniels528/trifecta/releases/download/v0.22.0rc8-0.9.0.1/trifecta-cli-0.22.0rc8b-0.9.0.1.bin.jar
wget https://github.com/ldaniels528/trifecta/releases/download/v0.22.0rc8-0.9.0.1/trifecta-ui-0.22.0rc8b-0.9.0.1.zip
unzip trifecta-ui-0.22.0rc8b-0.9.0.1.zip
cd trifecta-ui-0.22.0rc8b-0.9.0.1/bin/
./trifecta-ui &

設定が必要なら、$HOME/.trifecta/config.properties を適当に編集して./trifecta-ui &を起動し直します。

ブラウザで hostname:9000 にアクセスします。

“Observe”のタブからkafkaの中身を見れます。

【Java】 kafkaStreams.cleanUp(); がstate dirのファイルをうまく消せなくてエラーになる場合

おそらくwindows環境だけの問題です。

        KafkaStreams kafkaStreams = new KafkaStreams(builder.build(), streamsConfiguration);
        kafkaStreams.cleanUp();

の前に

        final File baseDir = new File(streamsConfiguration.get(StreamsConfig.STATE_DIR_CONFIG).toString());
        final File stateDir = new File(baseDir, streamsConfiguration.get(StreamsConfig.APPLICATION_ID_CONFIG).toString());
        //System.out.println(stateDir);
        try {
            FileUtils.deleteDirectory(stateDir);
        } catch (IOException e) {
            System.out.println("delete error");
        }

を突っ込みます。

import org.apache.commons.io.FileUtils; などが必要になります。

【debezium/kafka】 kafkaに外部から繋ぎたいとき

デフォルトだとkafka:9092に外から繋げません(たぶん)。

docker-compose.yamlに

kafka:
    (snip)
    environment:
        ADVERTISED_LISTENERS: "PLAINTEXT://xxx.xxx.xxx.xxx:9092"

xxx.xxx.xxx.xxxに外部から接続したい、ホストのアドレスを入れるとつながるようになります。

上記のようにした場合は、SECURITY_PROTOCOL_CONFIGをPLAINTEXTにして繋ぐのをお忘れなく。