Прежде всего, благодаря людям, которые в настоящее время участвуют в разработке Camel, я благодарен за всю тяжелую работу, которую они проделали.
Я ищу совет по дизайну.
Архитектура примерно такая:
У меня есть куча классов Java, которые при создании экземпляров обязаны соединяться друг с другом и отправлять сообщения, используя Apache Camel. Ограничения проекта требуют от меня создания структуры, в которой вся информация о маршрутизации, производители, потребители, конечные точки и т. Д. Должны быть частью camel-context.xml.
Человек должен иметь возможность изменить такой файл и полностью изменить существующий маршрут, не имея доступного ему кода Java (код Java не будет предоставлен, будет только скомпилированный Jar)
Например, в одной настройке,
Bean A -> Bean B-> Bean C-> file-> email.
в другой
Bean B-> Bean A-> Bean C-> ftp-> file-> email
Мы пробовали разные подходы, но если исходный компонент не реализован как Java DSL, скорость сообщений очень высока, потому что верблюд постоянно вызывает компонент A в первом примере и компонент B во втором (они источник).
Bean A и Bean B создают сообщения и управляются событиями. В случае возникновения необходимого события компоненты отправляют уведомление.
Мои преобразования очень просты, и мне вовсе не требуется мощь Java DSL.
Подводя итог, у меня есть следующие вопросы:
1) Учитывая вышеизложенные ограничения, я гарантирую, что вся информация о маршрутизации, включая адреса назначения, является частью файла контекста верблюда?
2) Есть ли пример, который я могу посмотреть, чтобы сохранить информацию о маршрутизации полностью независимой от кода Java?
3) Как я могу гарантировать, что Camel не будет постоянно вызывать исходный боб?
4) Верблюд постоянно вызывает только исходный компонент или любой компонент, который он посылает и отправляет сообщения независимо от положения компонента во всей очереди сообщений?
У меня закончились варианты, и я пытался настроить это различными способами. Любая помощь будет оценена.