常见的消息队列有:abbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ,而其中,Kafka在单机呑吐量以及可用性上都非常优秀,本文基于docker创建kafka集群,之后测试下消息的发布与接收,通过本文,你可以快速的搭建kafka集群。
首先,我们需要安装 docker、docker-compose,这部分内容可以查阅 本博客关于docker的内容,现在,我们搭建 kafka 集群吧。
1、docker run -d --name zookeeper -p 2181 -t wurstmeister/zookeeper
2、docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest
现在 我们已经部署完毕了,没错,就这么简单。
测试下吧:
1、docker exec -it kafka /bin/bash
2、cd /opt/kafka/
3、创建一个主题 kpromise:bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic kpromise
4、生产消息:bin/kafka-console-producer.sh --broker-list localhost:9092 --topic kpromise
进入后随便输入,之后按 ctrl + c 退出
5、消费消息:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic kpromise
此时你应该看到第 4 步 里面输入的内容了。
踩过的坑:直接使用 https://github.com/wurstmeister/kafka-docker 然后 docker-compose up ,结果太慢了,感觉镜像源没有为中国用户优化啊, 所以建议还是用上面的方式吧,当然,上面的方式也只是个 demo,不应该用于实际研发中,可能有性能等方面的问题。持续更新中。