对broker和生产者进行可靠性配置后,最后就剩下对消费者进行可靠性配置了,这样整个消息队列系统就可以确保实现只消费一次消息了。先了解消费者相关的一些概念。消费者和消费者组kafka使用消费者组来将多个消费者组织在一起,一个组内的消费者订阅的是同一个主题,每个消费者接收主题一部分分区的消息。注意:如果我们往群组里添加更多的消费者,超过主题的分区数量,那么有一部分消费者就会被闲置,不会接收到任...
在之前的文章里kafka实现只消费消息一次 - broker篇,对broker进行了可靠性配置。但是如果不对生产者进行可靠性配置,消息还是存在丢失的可能。发送消息的主要步奏创建消息ProducerRecord对象,对象包含目标主题Topic和消息的内容Value,还可以指定键Key或者分区Partition。生产者使用序列化器将ProducerRecord对象里的键和值对象序列化成字节数组。...
最近在写种子爬虫时,磁力链抓取的速度,远快于磁力链转种子的速度,于是,我使用Kafka来解耦抓取和转换。同时,我不想丢失任何一个磁力链(里面可能有我喜欢的小姐姐 ::aru:shy:: ),也不想重复将同一个磁力链转换成种子(转换过程速度有点慢 ::aru:speechless:: )。于是参考了各种资料,现在总结下如何使用kafka实现只消费消息一次。Kafka的架构在整个架构里,有三种角...
上篇文章ubuntu使用docker-compose搭建zookeeper集群,部署完了zookeeper集群。现在可以开始部署kafka集群。部署kafka.ymlversion: '3.7' networks: docker_net: volumes: kafka1_data: kafka1_sock: kafka2_data: kafka2_sock: kaf...
kafka的存储单元是分区分区是有序(按偏移量排序),不可变的消息序列。写入的消息只能被追加到分区。每个分区被分成若干个片段因为在一个大文件里查找和删除消息是很费事的,分区在磁盘(目录通过broker级别配置log.dirs指定)里被分成若干个片段文件。当生产者向kafka某分区写入消息时,kafka把消息写入到分区的活跃片段。如果达到片段大小上限,就会关闭当前文件,打开一个新的文件,成为新...