Apache Camel: сохранение информации о маршрутизации полностью независимой от кода Java - PullRequest
2 голосов
/ 04 октября 2010

Прежде всего, благодаря людям, которые в настоящее время участвуют в разработке 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) Верблюд постоянно вызывает только исходный компонент или любой компонент, который он посылает и отправляет сообщения независимо от положения компонента во всей очереди сообщений?

У меня закончились варианты, и я пытался настроить это различными способами. Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 04 октября 2010

Прочтите о скрытии промежуточного программного обеспечения на вики-страницах Camel. Это позволяет клиентам использовать интерфейс для отправки / получения сообщений, но совершенно не знает о Camel (API Camel не используется вообще).

Еще лучше подумать о покупке книги «Верблюд в действии» и прочитать главу 14, в которой говорится об этом. http://www.manning.com/ibsen/

Сэкономьте 41% на книгах Мэннинга: Верблюд в действии или ActiveMQ в действии. Используйте код s2941. Истекает 6 октября. http://www.manning.com/ibsen/

0 голосов
/ 15 февраля 2012

Если вы планируете использовать ServiceMix от FuseESB, вы можете разделить маршруты на две части.

Первая часть будет компонентом Event-driver, который запускает маршрут. Он может отправлять сообщения в ServiceNMR (см. http://camel.apache.org/nmr.html).

Другая часть будет оставлена ​​пользователям платформы с использованием Spring DSL. Он будет просто слушать сообщение о ЯМР (проталкивать другим маршрутом) и делать с ним все, что захочет.

Конечно, определение конечной точки может быть выполнено с использованием службы конфигурации servicemix (см. http://camel.apache.org/properties.html#Properties-UsingBlueprintpropertyplaceholderwithCamelroutes)

...