在我们的Restful Web服务中实现Kafka Producer的问题

时间:2019-04-03 06:27:28

标签: rest kafka-producer-api

我遇到一种情况,例如我正在开发宁静的Web服务,当我们收到对API的点击时,需要将消息推送到Kafka。

因此,根据Java Kafka文档,以下是程序

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
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 < 100; i++)
 producer.send(new ProducerRecord<String, String>("my-topic", 
 Integer.toString(i), Integer.toString(i)));
 producer.close();

在上面的代码行中,仅一次创建了Producer实例 并使用同一实例在循环中将100条消息推送到Kafka。但是,在实现Restful API的过程中,我们不会大量获取消息。一次我们只会收到一条消息,因此每次创建新的Producer实例时,每次API命中都需要100毫秒的时间将消息推送到Kafka,这是不可接受的。

既然Restful Web服务是无状态的,那么我们如何只使用一个Producer实例呢?

谢谢。

0 个答案:

没有答案