[英]How to call the Properties Method and set it into the main class?
已经没有错误,但是当我运行程序时,它无法识别另一个类中的序列化程序。 这是它的样子。
public class Producer{
private static final Logger logger = LogManager.getLogger(Producer.class);
public static void main(String[] args) {
logger.info("Creating Kafka Producer...");
KafkaProducer<Integer, String> producer = new KafkaProducer<>(PropConfigs.prodProps());
// The code above should run and call the PropConfigs (properties of kafka)
logger.info("Start sending messages...");
for (int i = 1; i <= AppConfigs.numEvents; i++) {
producer.send(new ProducerRecord<>(AppConfigs.topicName, i, "Message " + i + " Test"), new Callback() {
@Override
public void onCompletion(RecordMetadata recordMetadata, Exception e) {
if(e == null){
logger.info("\nReceived metadata" + " Topic:" + recordMetadata.topic() + " Partition: " + recordMetadata.partition() + " Offset: " + recordMetadata.offset() + " Time: " + recordMetadata.timestamp() + "\n");
} else {
logger.error("Error", e);
e.printStackTrace();
}
}
});
}
logger.info("Finished - Closing Kafka Producer.");
producer.flush();
producer.close();
}
}
这是 PropConfigs 类,我在其中放置了要从主类 Producer 调用的属性。
public class PropConfigs {
public static Properties prodProps(){
Properties props = new Properties();
props.setProperty(ProducerConfig.CLIENT_ID_CONFIG, AppConfigs.applicationID);
props.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, AppConfigs.bootstrapServers);
props.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, IntegerSerializer.class.getName());
props.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.setProperty(ProducerConfig.ACKS_CONFIG, "all");
props.setProperty(ProducerConfig.RETRIES_CONFIG, "3");
props.setProperty(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "5");
return new Properties(props);
}
}
每当我运行它时,就像我说的那样,它无法识别我设置的属性。
你的意思是它无法识别prodProps
方法? (这里没有自定义序列化程序)。 注意:你可以有这个return props
你没有显示你的导入语句,但确保这些类在同一个包中(而不是默认包,或者没有包)
如果你真的想外部化属性,通常使用 Spring-Boot / Spring-Kafka
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.