Kafka生产者示例以及常用参数的解释

本文详细介绍了如何使用Kafka 1.1.1版本开发生产者程序,包括选择序列化器、自定义分区器以及常用的生产者参数。重点讲解了同步与异步发送消息的方式,并提供了代码示例。此外,还探讨了Kafka的顺序保证机制,特别是参数`max.in.flight.requests.per.connection`在保证消息顺序中的作用。
摘要由CSDN通过智能技术生成

本文主要讲解如何使用Kafka的API开发Kafka的生产者程序。简单的说明如下:

  • Kafka版本:1.1.1

生产者中常见的操作

  • 选择序列化器
  • 自定义分区器,默认的分区器是根据key进行散列,一旦partition的数量发生变化,那么同一个key对应的分区就会发生变化

一些常见的类或接口说明:

  • java.util.Properties:该类是一个Hashtable的子类,用来维护Kafka生产者的配置信息
  • org.apache.kafka.clients.producer.ProducerConfig:Kafka中加载配置信息的类
  • org.apache.kafka.clients.producer.Producer:Kafka中的生产者接口类
  • org.apache.kafka.clients.producer.KafkaProducer:是接口Producer的实现类
  • org.apache.kafka.clients.producer.ProducerRecord:消息的包装类,发往kafka集群
  • org.apache.kafka.clients.producer.RecordMetadata:Kafka集群中的分区接收到消息后,会往生产者会送一个响应,这个响应就是一个RecordMetadata的示例,包含了消息的topic,partition和offset等信息

代码示例:

package producer;

import org.apache.kafka.clients.producer.*;
import java.util.Properties;
import java.util.concurrent.Future;

public class MyProducer {

    private static Properties kafkaProps = new Properties();

    /**
     * 初始化一些配置信息
     */
    public void initProperty(){
        kafkaProps.put("bootstrap.servers", "localhost:9092");
        kafkaProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        kafkaProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        kafkaProps.put("retries", 3);
        kafkaProps.put("acks", "all");
        kafkaProps.put("client.id", "zhangsy");
    }

    /**
     * 加载配置信息,生成一个生产者实例
     * @param props
     * @return
     */
    public Producer getProducer(Properties props){
        if (props == null || props.size() == 0)
            throw new IllegalArg
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值