Как заставить bean-компонент SmartLifeCycle запускаться до SpringCamelContext? - PullRequest
0 голосов
/ 01 июля 2019

Я использую верблюда в своем приложении и хочу создать компонент SmartLifeCycle, который запускается до CamelContext.

Для этого я реализовал пользовательский компонент SmartLifeCycle с фазой: Integer.MAX_VALUE - 101. SpringCamelContext имеет фазу: Ordered.LOWEST_PRECEDENCE

На моем компьютере работает отлично, мой bean-компонент запускается до bean-компонента SpringCamelContext.

Но после развертывания на моих серверах SpringCamelContext запускается раньше.

Есть идеи, почему? И как я могу убедиться, что мой бин запущен раньше?

Спасибо

Редактировать

Похоже, SpringCamelContext - это bean-компонент "LifeCycle", а не "SmartLifeCycle". Согласно документации:

 <p>Any {@code Lifecycle} components within the context that do not also
 implement {@code SmartLifecycle} will be treated as if they have a phase
 value of 0. That way a {@code SmartLifecycle} implementation may start
 before those {@code Lifecycle} components if it has a negative phase value,
 or it may start after those components if it has a positive phase value.

Но я все еще не знаю, как это исправить (как я могу узнать, если использование отрицательного значения не приведет к каким-либо побочным эффектам?) И почему это работает на моем локальном компьютере?

Редактировать 2:

Разница была в конфигурации управления. Если я использую другой порт для порта управления, и для этого используется другая конфигурация: DifferentManagementContextConfiguration.

При запуске метод "afterSingletonsInstantiated ()" вызывается в Конфигурации и создает текст управления, который обновляется немедленно.

Этот контекст обновляется перед обновлением основного ApplicationContext и перед запуском LifeCycleProcessor.

Это обновление инициализирует SpringCamelContext из-за прослушивателя ContextRefreshedEvent в нем.

Я все еще ищу что-то, чтобы исправить это ...

1 Ответ

0 голосов
/ 01 июля 2019

Это известная ошибка, исправленная в версии верблюда 2.24.1

...