Kafka Scala Producer API

官方example:
https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+Producer+Example

构造Producer

构造一个kafka.javaapi.producer.Producer<K, V>对象,K:分区key类型,V:消息类型

Properties props = new Properties();

props.put("metadata.broker.list", "broker1:9092,broker2:9092");//该配置项必须有,producer通过连接这些broker找到partition的leader,只要是集群中的broker就行,不一定要leader的
props.put("serializer.class", "kafka.serializer.StringEncoder");//序列化,这个类的输入决定了KeyedMessage<K,V>中V的类型,默认为kafka.serializer.DefaultEncoder,即直接传输byte[]
props.put("partitioner.class", "example.producer.myPartitioner");//分区规则,也有默认的,可以自定义
props.put("request.required.acks", "1");//发送消息成功后需要等待kafka的回应

ProducerConfig config = new ProducerConfig(props);

Producer<String, String> producer = new Producer<String, String>(config);

构造消息

构造消息kafka.producer.KeyedMessage<K,V>,K V与上述相同

KeyedMessage<String, String> data = new KeyedMessage<K, V>(String topic, K key, V message);

//若无kay参数,将随机投递至一个分区
KeyedMessage<String, String> data = new KeyedMessage<K, V>(String topic, V message);

发送消息

producer.send(data);

关闭producer

producer.close();
Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐