Apache Camel - конечные точки

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

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

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

И весной, как здесь -

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

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

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

Из-за этих методов необходимость использования встроенного в Java String методы форматирования исключены.

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

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

В Spring, вы можете добиться того же, что и здесь -

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

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