Kafka的操作 生产消息 消费消息
生产者就是生产一条一条的消息然后发送到Kafka。而发送到Kafka的过程当中需要去指定一个topic这条消息要存储在哪个主题当中。消费者就可以从这个主题当中进行消息的消费了。下面的脚本就是以控制台作为消息的输入源在控制台输入弟弟每一行数据会被当做一条消息发送给Kafka存到指定的分区指定的topic当中。可以看到主题里面是没有任何消息在里面的在控制台发送消息至于消息放在哪个分区里面现在还不知道肯定是找到其中一个分区存起来了要么在0 1 2分区的其中一个。到底进入到哪个分区里面是由分区器来决定的。生产者生产的消息是会被存放在log文件当中。通过控制台可以不断的生产数据这些数据最后都会被存放在指定的分区里面。如果有分区没有存在但是生产者都在往一个不存在分区里面写入数据可以看到主题被自动的创建出来了。当生产者生产所指定的主题不存在那么它会自动创建。创建主题要指定分区数量和副本因子那么如果没有指定那就1个。分区和副本都是1个。这样测试可以使用平时不会满足实际场景。分区数量是后期可以调整但是副本因子改不了。所以在启动生产者的时候好好检查指定的主题是不是存在的是不是可用的。上面就是通过脚本来开启了一个生产者生产消息发送到指定的主题当中。消费者可以从Kafka中消费指定主题当中的消息消费者也可以写一段逻辑和程序对消息进行处理。当然也可以使用Kafka内置的脚本。这个脚本非常简单就是将Kafka当中指定topic的数据消费打印在控制台上面。光标就停在这个位置了它会不断的从Kafka当中拉取最新的数据出来。可以看到生产者生产出来的消息消费者马上就可以收到这个消息。[appsbin]$ ./kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test-topic hello [appsbin]$ ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test-topic hello上面有个缺陷消费者只能消费到当时生产者所生产的消息但是之前生产的消息是消费不到的。这就需要去了解一个概念offset。生产者生产出来的消息最后是存放在指定的topic中的分区当中的好几个分区中都有很多的数据消息。每一条消息在分区当中都有都有一个唯一的序号这就叫做offset偏移量。offset是一个long型的数字有8个字节长度offset在分区之内一定是有序的。分区之间不一定是有序的但是在同一个分区内一定是有序的。在图中topic有3个分区生产者在生产消息的时候会把消息放在指定的分区里面。每个分区中都会有个编号的在单独的分区当中序号都是单调递增的。所以每个消息在分区当中都有一个offset作为位置的索引也是唯一标识。