(Spring) всегда в одном и том же потоке для одного и того же заголовка X-Forwarded-For?
общий смысл в том, чтобы запросы для однгого метода контроллера выполнялись последовательно для одного и того же клиента
добрый! тупое решение: 1. контроллер возвращает что-то, типа DeferredResult 2. контроллер принимает запрос и сразу его отдает в кастомный executor (скорей всего, это будет набор executors, а конкретный запрос будет выполняться в executor, выбранном на основе хэша от X-Forwarded-For) (a-ka Affinity Executor)
ну, это первое что приходит на ум, но это не быстрый способ
а можно же, наверное, сделать так, если я не ошибаюсь: synchronized (ip.intern()) { ... }
это очень нехорошо выглящее решение по нескольким причинам
1. https://stackoverflow.com/questions/133988/synchronizing-on-string-objects-in-java 2. мы блокируем потоки пула условного томката, когда всего-то хотели обработать запросы в правильном порядке - что случится, если придет 200 запросов с этим ip, и 200 с другими? 3. возможно, использовать synchronized в новом коде - не лучшая затея из-за loom - https://cr.openjdk.java.net/~rpressler/loom/loom/sol1_part1.html
еще я посмотрел вот в эту сторону
Обсуждают сегодня