Учебники

Apache Camel — Компоненты

Верблюд предоставляет несколько готовых компонентов.

В этой главе мы обсудим несколько важных компонентов из модуля Camel-Core .

боб

Компонент Bean связывает bean-компоненты с обменом сообщениями Camel. URI для создания конечной точки указывается как bean: beanID , где beanID — это имя компонента, указанное в реестре .

JndiContext jndiContext = new JndiContext();
jndiContext.bind("MilkOrder", new MilkOrderProcessor());
CamelContext camelContext = new DefaultCamelContext(jndiContext);

camelContext.addRoutes(new RouteBuilder() {
   public void configure() {
      from("direct:bigBasket")
         .to("bean:MilkOrder?method=placeOrder");
   }
});

Обратите внимание, как указывается конечная точка с использованием протокола bean : . При желании вы можете указать метод бина, который должен быть вызван; в этом случае метод с именем placeOrder будет вызван при оценке выражения Endpoint. MilkOrder — это имя JNDI для Javabean MilkOrderProcessor, зарегистрированное в первых двух строках фрагмента кода. Само определение MilkOrderProcessor здесь для краткости опущено.

непосредственный

Вы, наверное, заметили использование Direct в наших предыдущих примерах. Чтобы отправить заказ поставщику масла, мы использовали direct: oil в спецификации Endpoint. Использование компонента Direct позволяет синхронно вызывать конечную точку. Следующие два фрагмента кода из наших предыдущих примеров иллюстрируют использование Direct

.when(header("order").isEqualTo("oil"))
   .to("direct:oil")

А также,

from("direct:DistributeOrderDSL")
   .process(myProcessor);

файл

Компонент File обеспечивает доступ к файловой системе на вашем компьютере. Используя этот компонент, вы сможете сохранять сообщения от других компонентов на локальный диск. Кроме того, он позволяет другим компонентам Camel обрабатывать локальные файлы. Вы можете использовать либо file: directoryName [? Options], либо file: // directoryName [? Options] в качестве формата URI при использовании компонента File. Ранее вы видели использование этого компонента —

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

Обратите внимание, что компонент File по умолчанию принимает имя каталога. Следовательно, содержимое каталога заказов будет принято как входное содержимое. Чтобы указать конкретный файл в каталоге заказов , вы будете использовать следующий оператор —

from ("file:/order?fileName = order.xml").to("jms:orderQueue");

Журнал

Компонент Log позволяет вам записывать сообщения в базовый механизм регистрации. Camel использует Simple Logging Facade для Java (SLF4J) в качестве абстракции для различных каркасов. Вы можете использовать java.util.logging, logback, log4j для регистрации. Этот фрагмент кода иллюстрирует использование компонента Log

from("direct:DistributeOrderDSL")
   .to("bean:MilkOrder?method = placeOrder")
   .to("log:com.example.com?level = INFO&showBody = true");

Седа

Компонент SEDA позволяет асинхронно вызывать другую конечную точку в том же CamelContext . Если вы хотите вызывать экземпляры CamelContext, вам нужно использовать компонент VM . Использование SEDA иллюстрируется здесь —

from("direct:DistributeOrderDSL")
// send it to the seda queue that is async
   .to("seda:nextOrder")

На этом маршруте мы просто направим заказы в асинхронную очередь nextOrder . Клиент, подписавшийся на эту очередь, будет получать сообщения из этой очереди.

таймер

Компонент Timer используется для регулярной отправки сообщений и, таким образом, может быть очень полезен при тестировании приложений Camel. Здесь фрагмент кода запускает тестовое сообщение на консоль каждые две секунды —