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