Маршруты верблюдов и конечные точки - PullRequest
17 голосов
/ 11 октября 2011

Я изучал документы Apache Camel, пытаясь получить конкретное представление о двух из его самых основных концепций (конечные точки и маршруты), и хотя эти термины используются повсеместно в документах, яне может найти ссылку, которая на самом деле определяет, что они и для чего они используются.И хотя их имена звучат довольно очевидно, и я думаю Я понимаю, что они собой представляют, но теперь я получил задание, которое покорило меня до глубины души в Apache Camel Land, и это абсолютно жизненно важночто я понимаю, что это за механизмы.

Я предполагаю, что «конечная точка» - это просто bean-компонент, который можно настроить в файле конфигурации, как и любой другой, - который сопоставляет имя с URI / combo port(это взято из документации W3C).В контексте Apache Camel мое предположение состоит в том, что конечные точки используются для соединения компонентов друг с другом, так что между ними могут быть сформированы "маршруты" (соединения / карты).Поэтому, когда Компонент A, живущий в Конечной точке 1, хочет связаться с Компонентом B, живущим в Конечной точке 2, при условии, что существует сопоставление от 1 до 2, Camel сможет передавать сообщения между этими двумя.

Пожалуйста, остановите меня и исправьте меня, если я ошибаюсь здесь!

Итак, теперь я видел примеры, где выглядит, как маршруты могут быть настроены в Java:

from("endpointA").routeId("someMessage").to("endpointB");

И я видел примеры, когда кажется, что маршруты можно настраивать в XML:

<route id="">
    <from .../>
    <to .../>
</route>

Это два метода для настройки маршрутов, или они вообще разные концепции?

Наконец, каков формат сообщений, которые можно маршрутизировать между конечными точками? Если это, например, XML, какова XSD / схема этих перенаправленных сообщений?Если это должен быть объект Java, какие ограничения / ограничения применяются к объектам, которые может отправлять Camel?

Ответы [ 2 ]

16 голосов
/ 13 октября 2011

Похоже, вы достаточно хорошо понимаете концепцию.Я думаю, что это помогает думать о конечных точках в более абстрактных терминах. документация о верблюдах здесь не сильно поможет.Конечные точки могут рассматриваться как интерфейсы для компонента.Каждый компонент может иметь 1 или более настроенных конечных точек.Это помогает мне думать о конечных точках в контексте маршрута.Простой маршрут может идти от конечной точки A (это может быть очередь JMS, сокет tcp, файл или любой верблюжий компонент) и идти к конечной точке B (которая может быть любым верблюжьим компонентом).Конечно, вы можете иметь на маршруте процессоры, которые преобразуют данные.

Два приведенных вами примера создания маршрута - это два способа создания маршрута.Это примеры одного и того же понятия.Первый - Java DSL, а второй - XML.

Формат сообщений, как правило, XML, и XML может быть любым допустимым XML и не требует привязки к XSD.Сообщение также может быть любым объектом Java.Пока он находится в JVM (то есть не переходит через сокет), он не должен быть сериализуемым.

0 голосов
/ 18 апреля 2016

Маршрут - это упорядоченная комбинация этапов обработки

Конечная точка представляет начало или конец маршрута (по большей части), к которому другие маршруты могут подключиться как их начало / конец или могут вернуться во внешнюю систему (например, JMS, электронная почта и т. Д.)

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