У меня есть поле ввода для поиска на моем веб-сайте Java Spring, где пользователь может искать содержимое веб-сайта. Я хочу сохранить запросы, введенные пользователями, в мою базу данных MySQL асинхронно для функций автозаполнения. Я знаю, что могу использовать аннотацию @Async весной указания бассейна размером со следующим:Spring @Async save search
<task:annotation-driven executor="executor" />
<task:executor id="executor" pool-size="100"/>
Вопрос:
- Это хорошее решение для высокого трафика веб-сайт с более чем 10000 поиск в минуту? Принимая во внимание возможность исключения исключения исчерпания пула?
- Есть ли лучшее решение?
Сохранение поискового запроса и выборки для автозаполнения не представляет для меня тяжелой задачи (если вы правильно указали свою индексацию). Я не думаю, что использование исполнителя необходимо, я бы просто использовал простой DAO, подключенный к контроллеру – gerrytan
Да, я использую SOLR для индексирования. Я вызываю QueryService.save в моем контроллере, после чего я вызываю QueryService.query для запроса SOLR. Я просто подумал, что QueryService.save может немного повлиять на производительность. Значит, я ошибаюсь? – hajime
Я бы подумал, что у вас может быть неограниченная очередь, в которую вы добавляете текст для каждого запроса (не в фоновом режиме), и иметь пару фоновых потоков, которые потребляют из очереди при наличии текста. –