主题
- 创建主题:
./kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
- 多分区主题:
./kafka-topics.sh --create --topic mult-part ‐‐replication‐factor 1 --partitions 2 --bootstrap-server localhost:9092
- 查看主题信息:
./kafka-topics.sh --describe --topic mult-part --bootstrap-server localhost:9092
- 删除主题:
./kafka-topics.sh --delete --topic jh-topic --bootstrap-server localhost:9092
- 列出所有主题:
./kafka-topics.sh --list --bootstrap-server localhost:9092
显示主题信息:
./kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
消息
发消息到主题:
./kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
消费信息
- 从最开始消费消息
./kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
- 消费最新消息
./kafka-console-consumer.sh --topic quickstart-events --bootstrap-server localhost:9092
- 消费多主题
./kafka-console-consumer.sh --whitelist "quickstart-events|jh-topic" --bootstrap-server localhost:9092
- 单播消费
一条消息只能被某一个消费者消费的模式,类似queue模式,只需让所有消费者在同一个消费组里即可
./kafka-console-consumer.sh --consumer-property group.id=testGroup --topic jh-topic --bootstrap-server localhost:9092
- 多播消费
如下图,此时新
一条消息能被多个消费者消费的模式,类似发布订阅模式,针对Kafka同一条消息只能被同一个消费组下的某一个消费者消费的特性,要实现多播只要保证这些消费者属于不同的消费组即可。我们再增加一个消费者,该消费者属于testGroup-2消费组,结果两个客户端都能收到消息
./kafka-console-consumer.sh --consumer-property group.id=testGroup2 --topic jh-topic --bootstrap-server localhost:9092
消费组
- 查看消费组
./kafka-consumer-groups.sh --list --bootstrap-server localhost:9092
- 查看消费组的消费偏移量
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group testGroup
current-offset:当前消费组的已消费偏移量
log-end-offset:主题对应分区消息的结束偏移量(HW)
lag:当前消费组未消费的消息数
kafka集群实战
对于kafka来说,一个单独的broker意味着kafka集群中只有一个节点。要想增加kafka集群中的节点数量,只需要多启动几个broker实例即可。
为了有更好的理解,现在在一台机器上同时启动三个broker实例。
- 集群发送信息:
./kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic replicat-topic-r
- 集群消费信息:
./kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic replicat-topic-r --from-beginning
如果kafka集群里突然有一个节点宕机,绑定了集群的producer依然可以发送消息,消费者绑定了集群的也可以消费到消息。但如果消费者只绑定了一个节点,而刚好这个节点宕机,那么将消费不到信息。