Учебники

Apache Camel — Конечные точки

Мы узнали о том, как конечные точки выглядят в нашем интеграционном коде. Выражения, которые мы использовали до сих пор, такие как file: / order, jms: orderQueue, direct: distribteOrderDSL, являются конечными точками. Как видите, они следуют форматам спецификации URI. При оценке этого URI CamelContext создает экземпляр Endpoint ; вам не нужно беспокоиться о реализации Endpoint в вашем DSL.

Взяв наши предыдущие примеры, вы указываете конечные точки в Java DSL, как здесь —

from ("file:/order").to("jms:orderQueue");

А весной как здесь —

<route>
   <from uri = "file:/order"/>
   <to uri = "jms:orderQueue"/>
</route>

В обоих случаях конечная точка является константной строкой. В некоторых случаях вы можете захотеть построить эту строку во время выполнения. Вы можете сделать это, используя методы форматирования Java String . Camel предоставляет еще один более простой подход для создания этих строк URI во время выполнения. Для этой цели Camel предоставляет методы fromF и toF, которые принимают аргументы с указанными пользователем параметрами. Следующее утверждение иллюстрирует использование метода toF

from("direct:distributeOrderDSL”).toF("file://%s?fileName=%s", path, name);

Благодаря этим методам устраняется необходимость использования встроенных в Java методов форматирования String .

Верблюд по умолчанию использует простой язык для вычисления выражения конечной точки. Язык Simple был разработан, прежде всего, для оценки выражений и предикатов, не беспокоясь о тонкостях XPath . Для оценки предикатов вы можете комбинировать другой язык, такой как xpath, с простым языком по умолчанию. Это делается с помощью знака плюс, чтобы отделить другой язык. Фрагмент кода здесь показывает, как объединить строку xpath с выражением, написанным на Simple .

from("direct:start")
.toD("jms:${orderQueue}+language:xpath:/order/@id");

Весной можно добиться того же, что и здесь —

<route>
   <from uri = "direct:start"/>
   <toD uri = "jms:${orderQueue}+language:xpath:/order/@id"/>
</route>

Вы можете объединить столько языков, сколько хотите, каждый из которых отделен знаком плюс от предыдущего. Список поддерживаемых языков можно найти здесь .