Статьи

Введение в Apache Camel

Apache Camel — это открытая реализация известных шаблонов корпоративной интеграции. Camel — это механизм маршрутизации и посредничества, который помогает разработчикам создавать маршруты и правила посредничества в различных предметно-ориентированных языках (DSL), таких как Java, Spring / XML, scala и т. Д.

Верблюд универсален

Camel использует URI для поддержки большого количества моделей транспорта и обмена сообщениями, таких как HTTP, JMS, JBI, Mina, SCA, CXF, он также хорошо работает с внешними компонентами и форматами данных. Чтобы почувствовать универсальность Camel, вы можете просмотреть список компонентов и URI, которые он поддерживает, по ссылке ниже. http://camel.apache.org/components.html

Верблюд прост в использовании

Camel позволяет нам использовать один и тот же набор API для создания маршрутов и передачи сообщений между различными компонентами. Это делает его чрезвычайно простым в использовании

Модульное тестирование верблюда на одном дыхании

Модульное тестирование важно для написания любого качественного кода. Camel делает этот фасад разработки программного обеспечения чрезвычайно простым. Он предоставляет набор готовых компонентов, таких как CamelContextSupport, camel-guice, camel-test-blueprint для простого тестирования кода. Подробнее об этом в будущем посте.

Термины верблюдов / Классы / Интерфейсы

Конечная точка

Конечные точки — это места, где происходит обмен сообщениями. Это может относиться к адресу, POJO, адресу электронной почты, URI веб-службы, URI очереди, файлу и т. Д. В верблюде конечная точка реализуется с помощью реализованного интерфейса Endpoint. Конечные точки обернуты чем-то, называемым маршрутами.

CamelContext

CamelContext лежит в основе всех верблюжьих приложений и представляет собой систему времени выполнения Camel.

  1. Создать верблюжий текст.
  2. Добавьте конечные точки или компоненты.
  3. Добавьте маршруты для подключения конечных точек.
  4. Invoke camelcontext.start () — это запускает все внутренние потоки верблюда, которые отвечают за получение, отправку и обработку сообщений в конечных точках.
  5. Наконец, вызывая camelcontext.stop (), когда все сообщения обмениваются и обрабатываются. Это изящно остановит все верблюжьи внутренние потоки и конечные точки.

CamelTemplate

Это тонкая оболочка вокруг объекта CamelContext, которая отвечает за отправку обмена или сообщений конечной точке.

Составная часть

Компонент действительно является конечной точкой фабрики. Поскольку верблюд поддерживает множество различных видов ресурсов, каждый из этих ресурсов имеет разные конечные точки. В практических случаях приложение не создает конечные точки напрямую, используя Компоненты. Вместо этого CamelContext решает, какой компонент создать, а затем использует этот компонент для создания конечных точек. Так что в приложении у нас будет. CamelContext.getEndpoint ( «? Pop3: //[email protected] пароль = MyPassword»); Теперь в данном случае pop3 — это имя компонента. CamelContext сопоставляет все имя компонента с классами компонента и, используя имя, создает экземпляр экземпляра. Получив дескриптор компонента, он создает конечную точку, вызывая ее. Component.createInstance () метод.

Сообщение

Mesaage представляет собой одно конкретное сообщение, то есть запрос, ответ или исключение. Все конкретные классы сообщений влияют на интерфейс сообщений, например, класс JmsMessage.

обмен

Exchange — это контейнер сообщений. Он создается, когда получатель получает сообщение во время процесса маршрутизации.

процессор

Интерфейс процессора представляет класс, который обрабатывает сообщение. Он содержит единственный метод public void process (Exchange exchange), генерирующий исключение. Разработчики приложений могут реализовать этот интерфейс для предварительной бизнес-логики в сообщении при получении сообщения потребителем.

Маршруты и RouteBuilder

Маршрут — это поэтапное перемещение сообщения из источника посредством произвольных типов решений по фильтрам или маршрутизаторам к месту назначения. Они настраиваются с помощью DSL (предметно-ориентированного языка). Java DSL создается путем реализации интерфейса routebuilder. Он имеет единственный метод configure (), который определяет весь маршрут сообщения. Маршруты также могут быть настроены через XML-файл с помощью Spring.

Небольшой пример верблюжьего кода.

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

  1. Проверьте зависимости для верблюда.
  2. Создайте простой RouterBuilder.
  3. Регистрация CamelContext в весеннем файле.
  4. Внедрение маршрутизатора в компоненте CamelContext
  5. Выполнение класса путем запуска Camelcontext и, наконец, его остановки после выполнения.

1. Зависимости — добавьте следующие зависимости в ваш pom.xml

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
            <version>${camel-version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring</artifactId>
            <version>${camel-version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-aws</artifactId>
            <version>${camel-version}</version>
        </dependency>

2. Создать RouterBuilder — RouterBuilder может быть создан путем расширения класса org.apache.camel.builder.RouterBuilder и переопределения метода configure (). Вот пример

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
import org.apache.camel.builder.RouteBuilder;
 
/**
 * Created by IntelliJ IDEA.
 * User: Niraj Singh
 * Date: 7/28/13
 * Time: 10:29 AM
 * To change this template use File | Settings | File Templates.
 */
public class MyFirstRouterBuilder extends RouteBuilder {
     @Override
    public void configure() throws Exception {
        try{
            from( "file:d:/vids").to("file:d:/temp");
        }catch(Exception e){
 
        }
     }
}
  1. From () является конечной точкой источника и содержит URI файла или каталога, который верблюд будет опрашивать.
  2. to () представляет целевую конечную точку и содержит имя целевого файла или каталога.
  3. Файловый компонент uri имеет форму « file: // nameOfFileOrDirectory ».

3. Регистрация CamelContext весной и добавление RouterBuilder весной.

01
02
03
04
05
06
07
08
09
10
11
12
13
       xsi:schemaLocation="
 
    <camelContext id="sqsContext" xmlns="http://camel.apache.org/schema/spring">
         <routeBuilder ref="myFirstRouter" />
    </camelContext>
 
    <bean id="myFirstRouter" class="com.aranin.aws.sqs.MyFirstRouterBuilder"/>
 
</beans>

4. Запуск контекста верблюда, выполнение кода и остановка контекста верблюда.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import org.apache.camel.CamelContext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
 
/**
 * Created by IntelliJ IDEA.
 * User: Niraj Singh
 * Date: 4/16/13
 * Time: 11:21 AM
 * To change this template use File | Settings | File Templates.
 */
public class CamelHello {
    public static void main(String args[]) throws Exception {
        try {
                ApplicationContext springcontext = new FileSystemXmlApplicationContext("D:/samayik/awsdemo/src/main/resources/hellocamel.xml");
                CamelContext context = springcontext.getBean("firstCamelContext", CamelContext.class);
                context.start();
                Thread.sleep(10000);
                context.stop();
 
            } catch ( Exception e ) {
                System.out.println(e);
            }
 
    }
}

Если вы запустите этот класс, то сначала мы загрузим camelcontext из конфигурационного файла Spring. Вставьте в него компоновщик маршрутизатора. После запуска контекста весь файл из исходного каталога копируется в целевой каталог. Как только все файлы будут скопированы, попробуйте скопировать новый файл в исходный каталог, он также будет скопирован в целевой каталог, пока в этом случае контекст не будет работать 10000 мс.

У меня есть несколько более продвинутых учебников по верблюду. Возможно, вы найдете их полезными. Там ссылки перечислены в справочных разделах.

использованная литература

  1. http://camel.apache.org/
  2. http://camel.apache.org/enterprise-integration-patterns.html
  3. http://architects.dzone.com/articles/enterprise-integration
  4. http://weblog4j.com/2013/05/14/amazon-sqs-listening-to-sqs-using-apache-camel-the-spring-dsl-way/
  5. http://weblog4j.com/2013/04/17/amazon-sqs-listening-to-amazon-sqs-queue-using-apache-came l /

Это все люди. Хотя никто не будет писать комментарии, но мне нравится упорствовать, и все же я прошу людей добавить одну или две строки, если вам нравится этот урок.

Теплые пожелания

Niraj

Ссылка: Введение в Apache Camel от нашего партнера JCG Нираджа Сингха в блоге Weblog4j .