kafka Producer发送消息需要传什么配置,server可以传多个吗, 代码示例
时间: 2024-03-02 07:47:59 浏览: 108
Kafka Producer发送消息需要传入以下配置:
1. bootstrap.servers:Kafka集群中broker节点的地址清单,格式为host:port,多个地址用逗号分隔。
2. acks:表示Producer等待broker响应确认消息的级别。有三个值可选,分别是:
- 0:Producer在成功写入消息之前不会等待来自broker的任何确认。此时,Producer发送消息的可靠性较低,因为broker无法检测到消息是否已经成功写入。但是,这种方式的发送速度是最快的。
- 1:Producer在成功写入消息后会等待broker的确认。在此级别下,如果broker在接收到消息后宕机或者发送失败,则会丢失消息。
- all:Producer在成功写入消息后会等待所有的broker都确认。这种级别的消息发送最可靠,但是速度最慢。
3. key.serializer:Producer发送的消息中key的序列化方式,通常为字符串。
4. value.serializer:Producer发送的消息中value的序列化方式,通常为对象序列化后的字节数组。
示例代码如下:
```java
import org.apache.kafka.clients.producer.*;
import java.util.Properties;
public class KafkaProducerDemo {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // kafka集群地址
props.put("acks", "all");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
for (int i = 0; i < 10; i++) {
producer.send(new ProducerRecord<>("test_topic", Integer.toString(i), Integer.toString(i)));
}
producer.close();
}
}
```
在上面的代码中,我们传入了一个Kafka集群地址,即localhost:9092。如果你有多个Kafka集群,可以在这里传入多个地址,用逗号分隔即可。
阅读全文