在新版本中找到一些简单的入门示例。像KafkaProducer这样的东西与Producer示例不同,Web上的大部分旧代码似乎都没有相同的编译。
任何指导? Apache Kafka站点没有Java中的生成器示例。
请告知。
答案 0 :(得分:18)
在下面的示例中,我创建了一个生产者,使用String作为键,使用byte []作为消息内容。
使用基本参数创建新的生产者:
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "server1:123,server2:456");
props.put(ProducerConfig.RETRIES_CONFIG, "3");
props.put(ProducerConfig.ACKS_CONFIG, "all");
props.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "none");
props.put(ProducerConfig.BATCH_SIZE_CONFIG, 200);
props.put(ProducerConfig.BLOCK_ON_BUFFER_FULL_CONFIG, true);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArraySerializer");
KafkaProducer<String, byte[]> producer = new KafkaProducer<String, byte[]>(props);
同步发送消息:
producer.send(new ProducerRecord<>(topic, msgKey, msgContent)).get();
异步发送消息:
producer.send(new ProducerRecord<>(topic, msgKey, msgContent));
您的maven依赖关系对消费者和制作人有利。如果您只需要生产者,您可以使用:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.8.2.0</version>
</dependency>
请注意,新的 Consumer API 可用但暂时无法使用。在代码源中,新API将返回null或抛出异常。
答案 1 :(得分:5)
答案 2 :(得分:0)
最好检查一下原作者如何测试他们的代码,这样你就可以了解他们想要实现的目标或所需的用途(如果提供测试的时间和时间):
在这种情况下,只需检查此代码: https://github.com/apache/kafka/blob/0.8.2/examples/src/main/java/kafka/examples/Producer.java
:)
答案 3 :(得分:-2)
由于缺乏好的例子,我不得不倒退。
这是我的pom.xml的一部分
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.8.2.0</version>
<scope>compile</scope>
</dependency>
这是我的代码 - 一些测试。
// KafkaProducer.java - A first pass to verify that we can bring in the appropriate
// libraries using Maven
// Supports unit tests
package com.bruno;
import org.junit.Test;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.Properties;
import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;
public class MyKafkaProducer
{
public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.put("metadata.broker.list", "192.168.1.203:9092");
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("request.required.acks", "1");
ProducerConfig config = new ProducerConfig(props);
Producer p = new Producer<String, String>(config);
//sending...
String topic = "test";
String message = "Hello Kafka";
KeyedMessage<String, String> keyedMessage = new KeyedMessage<String, String>(topic, message);
p.send(keyedMessage);
}
}