Cześć,
dostałem zadanie, które polega na wysyłaniu wiadomości z web serwisu do topicu w kafce (jestem juniorem, o ile w ogóle).
Udało się wyklikać podstawową funkcjonalność - działa. W topicu pojawia się wiadomość.
Problem w tym, że zanim dostanę responsa mijają 2 sekundy.
Pierwsza myśl - spoko, trzeba poprawić performence. Tylko jak?
Dlatego przychodzę z prośbą o pomoc, ponieważ nie wiem nawet z jakiej strony ugryźć temat.
Moje pytania / wątpliwości:
- Chyba nie powinienem otwierać i zamykać producera w jednej funkcji
- Kombinowałem ze statycznymi metodami w klasie "SimpleProducer", które odpowiednio utworzą lub zwrócą istniejącą instancję Producera, ale to raczej nie wpłynęło na wydajność.
- Proszę o wskazówki jak poradzić sobie z designem takiego resta.
Używam Jersey'a, a moim kontenerem apki jest OpenLiberty. Poniżej zamieszczam fragment kodu.
Funkcja przyjmuje POST'em skromnego json'a, zmienia go na stringa i wpisuje do topica.
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Model getInfo(Model model) throws JsonProcessingException {
if(producer == null)
producer = (KafkaProducer<String, String>) KafkaProducerExample.createProducer();
else
producer = (KafkaProducer<String, String>) KafkaProducerExample.getProducer();
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
String json = mapper.writeValueAsString(model);
ProducerRecord<String, String> record = new ProducerRecord<String, String>("topic", json);
// send message - asynchronous
producer.send(record);
// message produced and pushed to send method
producer.flush();
// close producer
producer.close();
return "OK";
}