Grails Message Driven POGO слишком рано получает сообщение

В настоящее время наше приложение использует плагин grails-jms. У нас есть очередь сообщений ActiveMQ, к которой мы подключаемся. Проблема в том, что если мы запустим приложение после того, как сообщение уже будет в очереди, mdp(Message Driven Pogo) попытается использовать сообщение до того, как Grails полностью запустится.

(Полностью запущенный, мы замечаем, что у доменных объектов еще нет динамических искателей на них)

Текущее решение, которое мы реализовали, состоит в том, чтобы использовать повтор сообщения и установить настроенное количество времени между попытками повторения. Это, однако, не может быть нашим окончательным решением.

Кто-нибудь сталкивался с этим сценарием раньше? У кого-нибудь есть предложения?

1 ответ

Решение

Я не знаю Grails, но с Java, я бы установил контейнер слушателя autoStartup свойство ложного и start() контейнер, когда вы будете готовы. Но это не сработает, если есть явное start() самого контекста до того, как gradle будет готов.

Автозапуск контролирует только SmartLifecycle бобы запускаются автоматически refresh() (а не ждать start()). Наиболее SmartLifecycle объекты имеют автоматический запуск true.

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