参考资料
Kafka 中文文档
Kafka的安装和简单实例测试
kafka-python
1 安装
Kafka 中文文档中主要介绍了 Linux/Windows 系统下的 Kafka 配置,为了在本地 Mac 系统下跑起一个 demo,本文简单介绍如何在 Mac 中跑起 Kafka。
执行 brew install kafka
,由于 Kafka 需要依赖 ZooKeeper,所有在 brew
过程中,会把 Kafka 的其他依赖一起安装到 /usr/local/Cellar
目录下。
2 启动
可以到安装目录下的 bin
来看一下预定的一些启动脚本。
在启动 Kafka 之前需要先启动 ZooKeeper,看看 ZK 的启动命令里面有什么内容。
#!/bin/bash
JAVA_HOME="$(/usr/libexec/java_home --version 1.8)" exec "/usr/local/Cellar/kafka/0.11.0.1/libexec/bin/zookeeper-server-start.sh" "$@"
可以看出,实际上其启动命令是一个调用的 bash 脚本。感兴趣的话可以进一步查看该脚本的详细内容。运行该启动命令,会有以下输出,提示我们需要一份 ZK 的配置文件。
➜ bin zookeeper-server-start
USAGE: /usr/local/Cellar/kafka/0.11.0.1/libexec/bin/zookeeper-server-start.sh [-daemon] zookeeper.properties
那么这个配置文件可以在刚刚 brew
的时候安装的 ZK 依赖的配置目录下查找,具体如下:
那么完整的 ZK 启动命令应该是这样的 zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
,注意后面的为 ZK 配置文件的绝对路径。现在 ZK 应该已经成功启动了。
启动 Kafka 集群的过程与 ZK 相似,可以到对应配置文件目录中启动。
topic
是发布消息发布的 category
类别,以单节点的配置创建了一个叫 runzhliu
的 topic
。
➜ workspace kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic runzhliu
Created topic "runzhliu".
另外可以用 list
列出所有创建的 topics
,来查看刚才创建的主题是否存在。
➜ workspace kafka-topics --list --zookeeper localhost:2181
dblab
my_favorite_topic
runzhliu
然后我们用 producer
生产一些消息,hello oscar
。
➜ workspace kafka-console-producer --broker-list localhost:9092 --topic runzhliu
>hello
>oscar
最后用 consumer
来消费这些消息。
➜ workspace kafka-console-consumer --zookeeper localhost:2181 --topic runzhliu --from-beginning
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
hello
oscar
3 Python 客户端
因为使用脚本来生产、消费消息比较麻烦,而在生产中一般都是用封装好的客户端来进行操作,这里选择用 Python 的客户端 kafka-python。
创建一个目录来放置 Python 脚本如下:
按照官方 Demo,先启动一个消费者进程如下:
运行成功之后可以选择在用 Shell 脚本来对 runzhliu
主题来产生新的消息,这样在消费者的日志中就可以看到消费的消息,此处我们还是用 Python 客户端来产生一些消息。
以下是向主题发送三条消息。然后消费者日志会显示: