package io.skalogs.skaetl.generator; /*- * #%L * generator * %% * Copyright (C) 2017 - 2018 SkaLogs * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import com.fasterxml.jackson.databind.ObjectMapper; import io.skalogs.skaetl.config.KafkaConfiguration; import io.skalogs.skaetl.utils.KafkaUtils; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; import org.springframework.stereotype.Component; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; @Component @Slf4j public class GeneratorRetryService { private final Producer<String, String> producer; private final String topic; private final ObjectMapper mapper = new ObjectMapper(); private Random RANDOM = new Random(); public GeneratorRetryService(KafkaConfiguration kafkaConfiguration, KafkaUtils kafkaUtils) { producer = kafkaUtils.kafkaProducer(); topic = kafkaConfiguration.getRetryTopic(); } public Date addMinutesAndSecondsToTime(int minutesToAdd, int secondsToAdd, Date date) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(date.getTime()); cal.add(Calendar.MINUTE, minutesToAdd); cal.add(Calendar.SECOND, secondsToAdd); return cal.getTime(); } public void createRandom(Integer nbElemBySlot, Integer nbSlot) { for (int i = 0; i < nbSlot; i++) { for (int j = 0; j < nbElemBySlot; j++) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); Date newDate = addMinutesAndSecondsToTime(i, RANDOM.nextInt(50), new Date()); log.debug(i + "--" + j + "***" + df.format(newDate)); sendToKafka(RawDataGen.builder() .timestamp(df.format(newDate)) .type("gnii") .messageSend(" message number " + i + "--" + j + " for timestamp" + df.format(newDate)) .build()); } } } private void sendToKafka(RawDataGen rdg) { try { String value = mapper.writeValueAsString(rdg); log.info("Sending {}", value); producer.send(new ProducerRecord(topic, value)); } catch (Exception e) { log.error("Error during converter", e); } } }