Использовать указанную c версию компонента в маршруте Talend - PullRequest
0 голосов
/ 28 февраля 2020

Я использую Talend Open Studio для ESB (7.2.1) для создания Apache верблюжьих маршрутов. Несколько маршрутов содержатся в одном проекте, а также несколько bean-компонентов для этих маршрутов.

Некоторые маршруты совместно используют некоторые bean-компоненты, и со временем может случиться, что маршрут станет несовместимым с новейшей версией bean-компонента, но также и в вроде того, что несовместимость проявляется только во время выполнения и даже только в конкретном случае c.

Поэтому мой вопрос: можно ли указать точную версию компонента (поскольку все необходимые версии хранятся в проект Talend), на который ссылаются? Я думаю, что это может быть возможно в компоненте cBean , в компоненте cBeanRegister , в конфигурации Spring или в конфигурации зависимостей маршрута? - но не нашел никакой документации или информации по этому вопросу.

Моя точная проблема заключается в этом исключении:

org. apache .camel.component.bean.AmbiguousMethodCallException: Ambiguous возможны вызовы методов: [publi c stati c void beans.ArticleGroupHandler.handleGroup (org. apache .camel.Exchange), publi c stati c void beans.ArticleGroupHandler.handleNavisionGroups (org. apache .camel.Exchange)].

Сначала в компоненте существовал только метод public static void beans.ArticleGroupHandler.handleGroup(org.apache.camel.Exchange), поэтому моё использование компонента cBean без спецификации метода работало. После обновления по другому маршруту был добавлен метод public static void beans.ArticleGroupHandler.handleNavisionGroups(org.apache.camel.Exchange), и новая сборка первого маршрута привела к вышеуказанному исключению во время выполнения.

Я знаю, что могу решить это исключение, указав точный метод использовать, но хочу знать, смогу ли я обойти подобные проблемы в будущем, указав версию компонента.

1 Ответ

1 голос
/ 02 марта 2020

Версии Talend Bean - это вопрос контроля версий исходного кода. Думайте об этом как о помеченных коммитах в Git хранилище. Вы можете использовать только текущую версию, которая была скомпилирована с вашим маршрутом при сборке или опубликовании sh.

Для поддержки нескольких версий одного и того же компонента в приложении попробуйте скопировать его с суффиксом с номером версии, например V1, V2 et c. Это сделает все разные версии доступными в classpath маршрута, и вы сможете ссылаться на них как beans.MyBeanV1, beans.MyBeanV2 et c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...