Apache kafka 卡夫卡制作人代码FailedToSendMessageException
使用卡夫卡生成消息Apache kafka 卡夫卡制作人代码FailedToSendMessageException,apache-kafka,producer,Apache Kafka,Producer,使用卡夫卡生成消息 import java.util.Date; import java.util.Properties; import kafka.common.FailedToSendMessageException; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; public class K
import java.util.Date;
import java.util.Properties;
import kafka.common.FailedToSendMessageException;
import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;
public class KafkaProducer {
private static Producer<String, String> producer;
public KafkaProducer()
{
Properties props = new Properties();
props.put("metadata.broker.list","localhost:2181");
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("request.required.acks","1");
ProducerConfig config = new ProducerConfig(props);
producer = new Producer<String,String>(config);
}
public static void main(String[] args)
{
if(args.length<2)
{
System.err.println("Usage: KafkaProducer TopicName MessageCount");
System.exit(0);
}
String topic = args[0];
int messageCount = Integer.parseInt(args[1]);
KafkaProducer kafka = new KafkaProducer();
kafka.publishMessage(topic,messageCount);
}
private void publishMessage(String topic, int messageCount)
{
for(int mcount=0;mcount<messageCount;mcount++)
{
String runtime = new Date().toString();
String msg = "Message Published Time -" + runtime;
System.out.println(msg);
KeyedMessage<String,String> data = new KeyedMessage<String,String>(topic,msg);
producer.send(data);
}
producer.close();
}
}
Zookeeper服务已启动,代理已启动,主题已创建。消费者也准备好了
有人能帮我解决这个问题吗?您可以尝试使用中简要介绍的新卡夫卡制作人 注意导入
org.apache.kafka.clients.producer.*
而不是kafka.javaapi.producer.producer
类似于:
import java.util.Properties;
import java.util.concurrent.ExecutionException;
import org.apache.kafka.clients.producer.*;
import org.apache.kafka.common.serialization.StringSerializer;
public class KafkaProducerTest {
public static void main(String args[]) throws InterruptedException, ExecutionException {
// set up Kafka producer
KafkaProducer<String,String> kafkaProducer;
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
// instantiate the producer
kafkaProducer = new KafkaProducer<String,String>(props);
// add data to kafka
ProducerRecord<String,String> producerRecord = new ProducerRecord<String,String>("topic", "test key", "test value");
kafkaProducer.send(producerRecord);
// close producer
kafkaProducer.close();
}
}
import java.util.Properties;
导入java.util.concurrent.ExecutionException;
导入org.apache.kafka.clients.producer.*;
导入org.apache.kafka.common.serialization.StringSerializer;
公开课卡夫卡普罗斯特{
公共静态void main(字符串args[])引发InterruptedException、ExecutionException{
//设立卡夫卡制作人
卡夫卡创作者卡夫卡创作者;
Properties props=新属性();
put(ProducerConfig.BOOTSTRAP\u SERVERS\u CONFIG,“localhost:9092”);
put(ProducerConfig.VALUE\u SERIALIZER\u CLASS\u CONFIG,StringSerializer.CLASS.getName());
put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,StringSerializer.CLASS.getName());
//实例化生产者
卡夫卡制作人=新卡夫卡制作人(道具);
//向卡夫卡添加数据
ProducerRecord ProducerRecord=新的ProducerRecord(“主题”、“测试键”、“测试值”);
卡夫卡制作人发送(生产记录);
//亲密制作人
kafkaProducer.close();
}
}
您能否检查您的Kafka服务器是否在producer API使用的同一端口上运行
通常,Kafka群集在端口9092上运行。如果您的设置是这种情况,请在producer配置中使用相同的端口。您的生产商正在使用端口2181。也许这是个错误
import java.util.Properties;
import java.util.concurrent.ExecutionException;
import org.apache.kafka.clients.producer.*;
import org.apache.kafka.common.serialization.StringSerializer;
public class KafkaProducerTest {
public static void main(String args[]) throws InterruptedException, ExecutionException {
// set up Kafka producer
KafkaProducer<String,String> kafkaProducer;
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
// instantiate the producer
kafkaProducer = new KafkaProducer<String,String>(props);
// add data to kafka
ProducerRecord<String,String> producerRecord = new ProducerRecord<String,String>("topic", "test key", "test value");
kafkaProducer.send(producerRecord);
// close producer
kafkaProducer.close();
}
}