Я пытаюсь найти некоторые варианты для хранения сообщений о сообщениях в течение минуты в файле и повторять их каждый час. У меня около 3000 запросов в секунду, я хочу только сохранить сообщение с запросом в течение минуты, это даст мне около 180000 запросов на анализ. Но я хочу делать такой же анализ по запросу сообщений каждый час.Хранение запросов на сервлеты за минуту в файле за каждые интервалы в 1 час
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
ServletInputStream inputStream = request.getInputStream();
Reader reader = new InputStreamReader(inputStream);
requestMessage = gson.fromJson(reader, Request.class);
//I am trying to print requestMessage in one file for a minute at interval of 1 hour to do analysis on it
//(I am having around 3000 post requests per seconds)
} catch (Exception e) {
e.printStackTrace();
}
response.setStatus(HttpServletResponse.SC_NO_CONTENT);
}
Я попытался с помощью ниже кода в Post метод, но он не работает должным образом, потому что он начнет новый график каждый раз, у меня есть новый запрос, и я поставил тот же код в инициализации() метод, но это не дает никакого выхода.
service = Executors.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("Starting of 1 Hour time: "+new Date());
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.schedule(new Runnable(){
@Override
public void run(){
System.out.println("Starting of 1 minute: "+new Date());
while(requestMessage.getID().equals("123"))
{
try {
System.out.println("Printing to File: "+new Date()); Files.write(Paths.get("location/requestMessage.txt"),requestMessage, StandardOpenOption.APPEND);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}, 1, TimeUnit.MINUTES);
}
}, 0, 1, TimeUnit.HOUR);
Я как бы потерял здесь и искал некоторые варианты. Возможно ли это с помощью исполнителей или Thread? и если нет, то каковы другие варианты, которые я могу попробовать?
Спасибо!
Это не ясно, «на минуту с интервалом в 1 час», не могли бы вы прояснить? –
В идеале вы могли бы привести пример, чтобы уточнить? –
Спасибо Николасу за ответ. Я попытался объяснить немного больше. – anghanravi