深入理解kafka核心设计与实践原理_读书笔记_第2章 生产者

2.1客户端开发

    一个正常的生产逻辑需要具备以下几个步骤:

        (1)配置生产者客户端参数以及创建相应的生产者实例。
        
        (2)构建待发送的消息。

        (3)发送消息。

        (4)关闭生产者实例。

生产者客户端示例代码

    public class KafkaProducerAnalysis {

        //配置客户端参数
        public static final String brokerList = ” localhost:9092 ” ;
        public static final StrIng topic = ” topic-demo ”;
        
        public static Properties intConfig() {
        
            Properties props= new Properties() ;

            props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerList) ;

            props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());

            props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());

            props.put(ProducerConfig.CLIENT_ID_CONFIG,"producer.client.id.demo") ;                     
            
            return props;
        }
    
        //主函数  创建生产者  发送消息
        public static vo main (String[] args) {
        
            //①获取配置信息
            Properties props = intConfig();
            
            //②创建kafka生产者
            KafkaProducer<String , String> producer= new KafkaProducer<>(props);

            //③构建消息对象
            ProducerRecord<String, String> record = new ProducerRecord<> (topic,"hello , Kafka !” ) ;
            
            //④发送消息   
            try {
                producer.send(record);//发后即忘
            }catch(Exception e) {
                e.printStackTrace();//异常处理:实际开发中 需要重新处理异常,不只是简单的打印
            }
        }
    }

2.1.1 必要的参数配置

      在创建生产者实例之前有三个参数是必须配置的:bootstrap.servers、key serializer 和 value serializer

① bootstrap.servers :

       该参数用来指定生产者客户端连接 Kafka 集群所需的 broker地址清单,

       具体的内容格式为 host1:port1,host2:port2 ,可以设置一个或多个地址,此参数的默认值为“”。

       并不需要所有的broker地址,建议写两个以上,保证其中一个宕机,可以连接另一个。

② key serializer 和 value serializer:

       broker 端接收的消息必须以字节数组(byte[])的形式存在。

       在发broker 前需要将消息中对应的 key 和 value 做相应的序列化操作来转换成字节数组。 

       这两个参数分别用来指定 key 和value 列化操作的序列器,这两个参数无默认值。必须填写序列化器的定名


   KafkaProducer参数众多,我们可以直接使用客户端中的org.apache.kafka.clients.producer.ProducerConfig类
   
   每个参数在 ProducerConfig 类中都有对应的名称,避免参数全类名书写错误

2.1.2 消息的发送

    创建完生产者实例后,就需要构建消息,即创建ProduceRecord对象,对应的构造方法:

        public ProducerRecord(String topic, Integer partiti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值