Как динамически установить идентификатор CamelContext в Spring DSL?

Как динамически установить идентификатор camelContext в весеннем DSL? Рассмотрим мой сценарий так,

Пакет A: наличие camelContext, где я установил атрибут id, скажем, simple-ctx. В этом пакете есть некоторые другие служебные компоненты, которые используются в каком-то другом пакете.

Пакет B: импорт файла контекста, в котором я определил контекст верблюда. в B я определил B конкретные маршруты

Bundle C: импорт файла контекста, в котором я определил контекст верблюда. в C я определил конкретные маршруты C

Теперь пакеты B и C зависят от пакета A. Теперь, если я выполню команду context-list, она выведет список simple-ctx. Это означает, что Bundle B и C имеют одинаковый идентификатор camelContext. Я хотел добиться того, чтобы id выглядел как simple-ctx-B и simple-ctx-C, не определяя camelContext в B или C.

Ценим ваше предложение и отзыв.


person Ashish Mishra    schedule 01.09.2016    source источник
comment
не могли бы вы предоставить пример кода, в котором вы импортируете файлы контекста. Насколько я знаю, вы можете обмениваться объектами только между пакетами osgi, но не файлами контекста.   -  person Aleksei Bulgak    schedule 02.09.2016
comment
Почему бы вам не сохранить отдельные контексты и не поместить все общие компоненты в их собственный пакет?   -  person Alessandro Da Rugna    schedule 02.09.2016
comment
Это мое требование и архитектурный дизайн. Я не могу изменить это сейчас, потому что это оказывает огромное влияние на существующие службы. По этой причине хотелось изменить идентификатор контекста верблюда во время выполнения.   -  person Ashish Mishra    schedule 05.09.2016


Ответы (1)


Это невозможно. id является фиксированным значением. Однако имена JMX могут принимать динамические значения, такие как счетчики, идентификаторы пакетов и т. д.

http://camel.apache.org/camel-jmx.html

Звучит так, как будто вы хотите, чтобы у A было имя, где префикс — это имя его родителя?

Также вместо того, чтобы иметь camelContext во всех комплектах. Вместо этого вы можете иметь routes в A, чтобы эти маршруты были включены в те же camelContext, что и из B или C: http://camel.apache.org/how-do-i-import-routes-from-other-xml-files.html

person Claus Ibsen    schedule 06.09.2016