kafka发送消息至指定分区

16 篇文章 548 订阅 ¥19.90 ¥99.00

前言

在实际使用中,我们可能需要对某个topic下不同的消息进行分类管理,比如确保消费的顺序性,在这种场景下,我们可以首先确保生产者发送消息到指定的分区即可

本文的测试基于docker搭建的一个双节点的简单集群,有兴趣搭建的同学可参考我的另一篇博客

1、创建一个名为second的topic

在该topic下,有3个分区,两个副本

$KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper zoo1:2181 --replication-factor 2 --partitions 3 --topic second

2、从某个docker节点下进入控制台,输入如下命令等待消费

$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server kafka1:9092 --from-beginning --topic second

在使用Java客户端连接kafka进行消息发送时,提供了2种发送消息到指定的分区的方式,下面分别进行演示

3、pom文件添加如下依赖

		<dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>0.11.0.0</version>
        </dependency>

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
要将消息发送Kafka的特定分区,你可以使用Kafka生产者API中的`ProducerRecord`类的构造函数,为消息指定一个特定的分区号。下面是一个示例代码片段,展示了如何发送消息指定分区: ```java import org.apache.kafka.clients.producer.*; public class KafkaProducerExample { public static void main(String[] args) { // 配置Kafka生产者 Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // 创建Kafka生产者 Producer<String, String> producer = new KafkaProducer<>(props); // 发送消息指定分区 String topic = "your_topic"; String message = "your_message"; int partition = 1; // 指定分区号 ProducerRecord<String, String> record = new ProducerRecord<>(topic, partition, null, message); producer.send(record, new Callback() { @Override public void onCompletion(RecordMetadata metadata, Exception exception) { if (exception != null) { System.out.println("消息发送失败:" + exception.getMessage()); } else { System.out.println("消息发送成功,位于分区 " + metadata.partition() + ",偏移量 " + metadata.offset()); } } }); // 关闭Kafka生产者 producer.close(); } } ``` 在上面的示例中,你可以通过设置`partition`参数来指定消息发送到的分区号。注意,分区号是从0开始的,如果指定分区号超出了有效范围,Kafka将会抛出`InvalidPartitionException`异常。 希望这可以帮助到你!如果还有其他问题,请随时提问。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小码农叔叔

谢谢鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值