Apache Camel: конечная точка "direct:start" - что это значит?

Я новичок в Apache Camel. Может кто-нибудь объяснить, что означает "прямой старт" в Camel. Пожалуйста, смотрите

http://camel.apache.org/http

from("direct:start")
.to("http://myhost/mypath");

спасибо.

5 ответов


"direct: start" выше просто говорит, что маршрут начинается с Прямой Составляющей "старт".

прямая конечная точка обеспечивает синхронный вызов маршрута. Если вы хотите отправить Exchange к прямой: запустите конечную точку, которую вы создадите ProducerTemplate и используйте различные методы отправки.

ProducerTemplate template = context.createProducerTemplate();

template.sendBody("direct:start", "This is a test message");

в названии нет ничего особенного start. Это просто имя, которое вы будете использовать при обращении к конечной точке и может нет direct:foo.


предположим, что прямой маршрут как метод с именем start, поэтому нам нужно вызвать метод start / direct route для выполнения определенной операции. Приведенный ниже пример поможет .

первый маршрут будет запущен, когда входной файл доступен в местоположении XXXX , и когда он достигнет линии, фактический поток перейдет ко второму маршруту. В основном прямой маршрут с конечной точкой from будет инициирован некоторой конечной точкой производителя.

<route id="fileRoute">
   <from uri="file:XXXX">
      ..
   <to uri="direct:start">
</route>

<route id="directStartRoute">
    <from uri="direct:start">
    <to uri="http://myhost/mypath">
</route>

Apache Camel direct в основном для отправки обмена с одного маршрута на другой в том же контексте верблюда. Предположим, вы получаете сообщение от AMQ и хотите заполнить заголовки для каждого полученного сообщения, а затем отправить его в список получателей. Так вот вам нужно создать новый маршрутизатор, который имеет следующее описание

from(“direct:populateHeaders”)
.setHeader(“myHeader”, “myHeaderValue”)
.end()

и с любого маршрута вы можете отправить свой объект Exchange на этот маршрут, написав

...

.to(“direct:populateHeaders”)

...

важно иметь в виду, что это не будет работать из вашего верблюжьего контекста.


direct: start предоставляет синхронные способы связи между 2 конечными точками, и это используется только в том случае, если вы хотите общаться с помощью сообщений camel, а не общих файлов или xml-сообщений.


рассмотрим это так : Есть две вещи, когда вы отправляете сообщение на camel route. 1. Схема URI, которая определяет способ доставки Вашего сообщения. И к какому типу компонентов он будет доставлен. 2. Пути URI, который определяет экземпляр этого компонента.

теперь, к вашему прямому: начальное местоположение. "direct" говорит, что это сообщение должно отправляться синхронно прямому компоненту. 'start' сообщает, какой экземпляр прямого компонента это сообщение должно быть доставлено.

важность различных путей URI: Теперь подумайте, если вам приходится по разным маршрутам. И хочет синхронно создавать сообщения из двух разных потоков. Использование "direct: start" в качестве начальной точки для маршрутов не будет работать. Если у вас нет какого-либо условного компонента обработки, забудьте об этом, если вы новичок. Для успешной доставки сообщений на оба маршрута вам нужно будет добавить 2 записи, т. е. "direct: somename1" и 'direct: somename2'. "старт" не является обязательной вещью , вы можете дать любое имя, которое вам нравится.

Я рекомендую вам прочитать некоторые главы из книг Мартина Фаулера EIP. Это замечательный ресурс для начала. Это сделает вас очень легко понять Camel.