Как лучше всего обрабатывать сообщения?
Я использую callback API, чтобы получать сообщения. Как лучше всего обрабатывать сообщения? У меня есть команды, которые выполняются не сразу (обработка видео), а через какое-то время (минута). Т.е. мне нужно серверу вернуть ok, а программа будет обрабатывать видео и потом вернет результат. Как это лучше всего и правильнее реализовать?
@Controller
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
@RequestMapping(value = "/path", method = RequestMethod.POST)
@ResponseBody
String message(@RequestBody JSONObject jsonObject) {
return "ok";
}
}
Ответы (1 шт):
Автор решения: Barmaley Red Star
→ Ссылка
Решение задачи состоит из 2-х частей
- Принятые от сервер сообщения надо складывать в очередь типа FIFO, технически это любая коллекция имплементирующая интерфейс
Queue(очередь). То есть приняв сообщения от сервера его пихаем в очередь и выставляем сигнал "ок" - Далее обработчик сообщений - обычно реализуется в виде отдельного потока/
Thread, который в бесконечном цикле проверяет очередь сообщений и поочередно их обрабатывает
В тяжелом варианте - это реализуется через API JMS, в рамках Spring это может быть например RabbitMQ, но это тяжелый вариант, поскольку RabbitMQ подразумевает выделение отдельного серверного контейнера и нацелен на работу с множественными клиентами и серверами.