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