@runzhliu
2018-05-16T01:15:46.000000Z
字数 1812
阅读 1119
mac kafka
Kafka 中文文档中主要介绍了 Linux/Windows 系统下的 Kafka 配置,为了在本地 Mac 系统下跑起一个 demo,本文简单介绍如何在 Mac 中跑起 Kafka。
执行 brew install kafka,由于 Kafka 需要依赖 ZooKeeper,所有在 brew 过程中,会把 Kafka 的其他依赖一起安装到 /usr/local/Cellar 目录下。

可以到安装目录下的 bin 来看一下预定的一些启动脚本。

在启动 Kafka 之前需要先启动 ZooKeeper,看看 ZK 的启动命令里面有什么内容。
#!/bin/bashJAVA_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-startUSAGE: /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 runzhliuCreated topic "runzhliu".
另外可以用 list 列出所有创建的 topics,来查看刚才创建的主题是否存在。
➜ workspace kafka-topics --list --zookeeper localhost:2181dblabmy_favorite_topicrunzhliu
然后我们用 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-beginningUsing 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].hellooscar
因为使用脚本来生产、消费消息比较麻烦,而在生产中一般都是用封装好的客户端来进行操作,这里选择用 Python 的客户端 kafka-python。
创建一个目录来放置 Python 脚本如下:

按照官方 Demo,先启动一个消费者进程如下:

运行成功之后可以选择在用 Shell 脚本来对 runzhliu 主题来产生新的消息,这样在消费者的日志中就可以看到消费的消息,此处我们还是用 Python 客户端来产生一些消息。

以下是向主题发送三条消息。然后消费者日志会显示:

