Пакет больше не действителен при запуске верблюжьей программы
У меня есть верблюдовый пакет, развернутый в сервисном миксе, и он работает несколько раз, и теперь после многих прогонов один и тот же пакет сообщает об исключении ниже.
org.apache.camel.runtimeexception :java.lang.illegalstateexception: bundlecontext is no longer valid
Тот же сценарий работал нормально при некоторых запусках, и неожиданно при некоторых последовательных запусках он выдает вышеуказанные ошибки.
Решит ли проблема перезапуск smx или удаление пакета? это третий раз, когда я сталкиваюсь с этой проблемой, и все время небольшой перезапуск решал ее. Пожалуйста, предложите, если это какая-то другая проблема.
После моего комментария ниже
Я использовал в коде, который я использовал, как показано ниже.
<choice>
<when>
<simple>some condition</simple>
</when>
<when>
<simple>some other condition</simple>
<stop/>
<when>
</choice>
<!--Still more code and logic exists-->
Если я использовал здесь и это проблема здесь, что я должен сделать, чтобы выйти, когда приходит второе условие.
Есть ли способ остановить дальнейшее казнь здесь? то есть способ остановить выполнение только этого конкретного запроса и не остановить маршрут? В этом сценарии есть другие запросы, которые не будут затронуты этой остановкой и будут работать для других запросов.
Я думаю, что в ссылке http://camel.apache.org/intercept.html говорится, что она используется для остановки дальнейшего выполнения, но остановит ли маршрут в любом случае.
Приведет ли это к расслоению больше недействительного сценария. Отсюда возникает вопрос, где будет весенний конфиг-эквивалент CamelContext.stop()?
После моего другого комментария ниже, который направляет сюда.
Также мы работаем в среде, где у верблюда есть больше настроенных связок, которые облегчают нашу разработку. Это более конкретно загружает маршруты динамически. Будет ли это одной из причин, по которой маршруты могут не запускаться должным образом, когда мы даем camelCOntext.Start() и т. Д....?
1 ответ
По верблюжьему пути я не могу сказать, что что-то не так. Поскольку вы только что задали другой вопрос, я просто опубликовал свой ответ здесь:
Элемент stop в маршруте работает только для обмена, что означает, что обмен, направленный в эту точку, больше не будет обрабатываться. Если вы хотите остановить маршрут или контекст верблюда, вам нужно вызвать CamelContext.stop().
Если это можно сделать в конфигурации Spring, используя компонент camel-controlbus.