У меня есть несколько пакетов (A, B и C), развернутых в контейнер OSGi, каждый из которых содержит CamelContext
и некоторые маршруты. У меня есть еще один комплект (M) с CamelContext
с маршрутом (для сбора данных мониторинга) и InterceptStrategy
bean. Я бы хотел, чтобы InterceptStrategy
bean из M автоматически применил ко всем другим CamelContext
в контейнере (т.е. Те, что указаны в A, B и C), без необходимости изменять другие пакеты.
В конечном счете, цель состоит в том, чтобы перехватить данные из каждого CamelContext
в маршрут в M, не внося никаких изменений в A, B или C, чтобы явно маршрутизировать Exchange
. Является ли этот подход или подобный подход выполнимым?
Все CamelContext
настроены с использованием Spring XML.
Обновление: Дополнительный контекст
Связки A, B и C содержат основной продукт, ответственный за обработку данных. Bundle M содержит дополнительный инструмент мониторинга, предназначенный для измерения определенных параметров данных, проходящих через A, B и C. В настоящее время добавление дополнительного инструмента требует изменения маршрутов в A, B и C для добавления дополнительных Processor
в обогатите Exchange
данными мониторинга и прочитайте данные мониторинга до конечных точек <to />
.
Цель состоит в том, чтобы иметь возможность отбрасывать Bundle M в уже проверенную систему с A, B и C; и автоматически применять его к существующим маршрутам без необходимости изменять конфигурацию существующих и работающих пакетов. Допустимо вносить изменения в A, B и C, чтобы поддерживать это, пока изменения не приводят к тому, что A, B и C полагаются на M для запуска (то есть ABC все равно должен работать без M).
Если есть лучшее средство для этого, чем использование перехватчиков, я открыт для этого. Основные цели:
- Держите A, B и C отделившись от M (особенно во время разработки)
- Убедитесь, что интеграция M с A, B и C максимально упрощена.
- Разрешить M интегрировать без необходимости вручную изменять A, B или C