Создание объекта RequestScope из Spring App

У меня есть приложение весенней загрузки, обслуживающее запросы веб-API.

Приложение имеет перехватчик extending HandlerInterceptorAdapter который считывает информацию из заголовков запроса и создает экземпляр ExecutionContext для запроса.

ExecutionContext является @Component с @RequestScope,

ExecutionContext - это @Autowired в Сервисы на любом уровне - бизнес-сервис, весенние данные для AuditorAware и т. д., и все это работает красиво и надежно.

Теперь приложение хочет обрабатывать события из сервиса SQS сервиса AWS Cloud. Это работает так, что вы просто комментируете свой метод @SqsListener и он начинает опрашивать очередь и читать события как String, которые можно анализировать в соответствующие объекты. По мере поступления событий они должны обрабатываться одними и теми же бизнес-службами и службами хранилища. Но бизнес-услуги имеют это RequestScoped Autowired ExecutionContext который генерирует исключение, так как в этом сценарии нет HTTP-запроса.

Я попытался сделать поток ExecutionContext ограниченным, но это создает кучу других проблем. Есть ли другой способ решить эту проблему, кроме необходимости переписывать метод SQSListener, чтобы REST API обращался обратно в APP во время обработки событий, а не просто обращался к Сервисам напрямую?

0 ответов

Другие вопросы по тегам