kafka あとくされなく気軽に試したい
vm 作り直すのも面倒。docker でなんとかしたい。http://wurstmeister.github.io/kafka-docker/ でやるのが有名のようだ。が実際やってみるとメンドクサイ。 こっちが楽じゃないか。
気軽に試す
kafka と zookeeper 起動
$ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-kafka/master/docker-compose.yml > docker-compose.yml $ docker-compose up
確認
$ docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------------------------------------- bitnami_kafka_1_b4e7444b5ac1 /entrypoint.sh /run.sh Up 0.0.0.0:9092->9092/tcp bitnami_zookeeper_1_44054781d94b /entrypoint.sh /run.sh Up 0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp, $ docker network ls NETWORK ID NAME DRIVER SCOPE fa44c4fa3457 bitnami_default bridge local 5ee57849102a bridge bridge local 123b1da9fc93 host host local 55a73359e1e6 none null local
トピック確認。いちいちコメントがうるさいwww
$ docker run -it --rm \ --network bitnami_default \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \ bitnami/kafka:latest kafka-topics.sh --list --zookeeper=zookeeper:2181 11:13:26.34 11:13:26.34 Welcome to the Bitnami kafka container 11:13:26.34 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker- 11:13:26.34 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-kaf 11:13:26.35 Send us your feedback at containers@bitnami.com 11:13:26.35
トピック作成
$ docker run -it --rm \ --network bitnami_default \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \ bitnami/kafka:latest \ kafka-topics.sh --create --topic test --partitions 1 --zookeeper zookeeper:2181 --replication-factor 1
トピック確認
$ docker run -it --rm \ --network bitnami_default \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \ bitnami/kafka:latest \ kafka-topics.sh --list --zookeeper zookeeper:2181 test
コンソールプロデューサー
$ docker run -it --rm \ --network bitnami_default \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \ bitnami/kafka:latest \ kafka-console-producer.sh --topic=test --broker-list=kafka:9092 >asdf >qwer >zxcv >tyui >f >h >j >k >l >ggggggg >^C
コンソールコンシューマー。プロデューサーを起動したままにしておくと、コンシューマにメッセージが渡るのが確認できる。
$ docker run -it --rm \ --network bitnami_default \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \ bitnami/kafka:latest \ kafka-console-consumer.sh --bootstrap-server=kafka:9092 --topic test --from-beginning asdf qwer zxcv tyui f h j k l ggggggg ^CProcessed a total of 10 messages
おわり
wurstmeister/kafka-docker はソケットを使ったりして面白い。が ip/port しらべたりする手間があって面倒だ。
bitnami でなくても、kafka zookeeper が入ってる docker-compose.yml はそこら中にあるからテキトーに...信用にできるイメージを使えばいいと思う。 kafka 操作するたびに docker run するのはカッコ悪いかもしれないが、要は kafka-***.sh の行だけ変えればいい。