Я использую верблюда в своем приложении и хочу создать компонент 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 в нем.
Я все еще ищу что-то, чтобы исправить это ...