kafka指定分区消费

16 篇文章 548 订阅 ¥19.90 ¥99.00

前言

在某些场景中,消费者组中不同的消费者需要从某个topic下的不同分区接收消息,并确保消息的有序性,或者producer端需要根据一定的业务规则对消息进行分类然后发送到不同的分区,然后不同的消费者就可以获取指定分区的消息了

在上一篇中,我们讨论过如何在producer端将消息发送到指定的分区的两种实现方式,结合上面的需求,我们继续在此基础上实现消费端消费指定分区的消息

代码流程说明

1、创建测试topic

提前在开启了kafka服务的虚拟机或服务器上创建一个名为 "zcy3"的topic,为3个分区,可执行下面的命令进行创建

./kafka-topics.sh --zookeeper localhost:2181 --create --topic zcy3 --partitions 3 --replication-factor 1

2、编写producer代码

public class ParProducer {

    private final KafkaProducer<String, String> producer;

    public final static String TOPIC = "zcy3";

    public ParProducer() {
        Properties props = new Properties();
        props.put("bootstrap.servers", "101.15.37.145:9092");
        //所有follower都响应了才认为消息提交成功,即"committed"
        pro
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kafka是一款分布式的流处理平台,可以用来处理大规模的实时数据流。在Kafka中,消息以主题(topic)的形式进行存储和组织,而主题又被划分为多个分区(partition)。 消费者(consumer)可以从指定分区中读取消息。消费者可以通过指定分区编号或者分区副本所在的主机地址来消费特定分区的消息。 当我们需要消费指定分区时,可以按照以下步骤进行操作: 首先,创建一个Kafka消费者对象,在创建消费者时,需要指定消费者组ID和消费者配置参数。 然后,指定消费分区Kafka提供了两种方式进行分区指定: 1. 通过指定分区编号:可以通过`assign()`方法将指定分区编号传递给消费者。例如,`consumer.assign(Collections.singleton(new TopicPartition("topicName", 1)));`表示将消费指定消费主题名为"topicName"下分区编号为1的分区的消息。 2. 通过指定主机地址:可以通过`assign()`方法将指定的主机地址传递给消费者。例如,`consumer.assign(Collections.singleton(new TopicPartition("topicName", new Node(1, "hostName", 9092))));`表示将消费指定消费主题名为"topicName"下分区副本所在的主机为"hostName",端口号为9092的分区的消息。 最后,通过调用`poll()`方法来获取指定分区的消息。消费者会从指定分区的最新消息位置开始读取消息,并持续地从该分区获取新的消息。 需要注意的是,在消费者中指定分区后,消费者只会读取该分区的消息,并忽略其他分区的消息。如果需要消费多个分区的消息,可以重复调用`assign()`方法来指定多个分区。 以上就是使用Kafka消费指定分区的简要介绍,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小码农叔叔

谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值