java - установка - camel в действии




Что такое Apache Camel? (14)

Что это такое?

Apache Camel - это легкая интеграционная платформа, которая реализует все шаблоны Enterprise Integration. Вы можете легко интегрировать различные приложения, используя требуемые шаблоны.

Вы можете использовать Java, Spring XML, Scala или Groovy. Доступны практически все технологии, например, HTTP, FTP, JMS, EJB, JPA, RMI, JMS, JMX, LDAP, Netty и т. Д.

Взгляните на эту article и статью модели EIP

Как он взаимодействует с приложением, написанным на Java?

Camel использует специфичный для Java язык или DSL для создания шаблонов или маршрутов интеграции предприятия на разных языках (DSL), перечисленных ниже.

Java DSL - DSL на основе Java, использующий свободный стиль строителя.

История Шаблона интеграции предприятия решает эти понятия:

Сообщение, конечная точка, производитель, потребитель, маршрутизация, шина, преобразование и процесс .

Взгляните на эту article Anirban Konar для одного из вариантов использования в реальном времени.

Это что-то, что идет вместе с сервером?

Он действует как мост между несколькими подсистемами предприятия.

Это независимая программа?

Apache Camel, интеграционная структура, объединяет различные независимые приложения.

Основное преимущество Camel : вы можете интегрировать различные приложения с различными технологиями (и разными протоколами), используя те же самые концепции для каждой интеграции.

Я не понимаю, что именно делает Camel .

Если бы вы могли дать в 101 слова введение в Верблюд:

  • Что это такое?
  • Как он взаимодействует с приложением, написанным на Java?
  • Это что-то, что идет вместе с сервером?
  • Это независимая программа?

Пожалуйста, объясните, что такое Camel.


Apache Camel - это Java-платформа для интеграции с Enterprise. Например: если вы создаете веб-приложение, которое взаимодействует со многими API-интерфейсами поставщиков, мы можем использовать верблюда в качестве инструмента внешней интеграции. Мы можем сделать больше с ним на основе прецедента. Camel in Action из публикаций Manning - отличная книга для изучения Camel. Интеграции могут быть определены ниже.

Java DSL

from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
    .log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
    .bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
    .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
    .to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
                    + "&bridgeEndpoint=true")
    .bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");

Это просто создать конечную точку REST API, которая, в свою очередь, вызывает внешний API и отправляет запрос обратно

Весенняя DSL

<route id="GROUPS-SHOW">
    <from uri="jetty://0.0.0.0:8080/showGroups" />
    <log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
    <to uri="direct:auditLog" />
    <process ref="TestProcessor" />
</route>

Приступая к вашим вопросам

  1. Что это такое? Ans: - Это структура, которая реализует шаблоны интеграции предприятия
  2. Как он взаимодействует с приложением, написанным на Java? Ans: - он может взаимодействовать с любыми доступными протоколами, такими как http, ftp, amqp и т. Д.
  3. Это что-то, что идет вместе с сервером? Ans: - Он может быть развернут в контейнере типа tomcat или может быть развернут независимо как Java-процесс
  4. Это независимая программа? Ans: - Это может быть.

Надеюсь, поможет


Camel помогает в маршрутизации, трансформации, мониторинге.

Он использует маршруты; который может быть описан как:

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

Пример: ваше приложение запаса имеет некоторый вклад аналитика, оно будет обработано через приложение / веб-компонент, а затем результат будет опубликован всем заинтересованным / зарегистрированным членам для конкретного обновления запасов.


Большинство «новых» вещей в вычислениях не совсем новые, они всего лишь мистифицирующая оболочка вокруг того, что уже хорошо понято. Когда их трудно понять, обычно это происходит потому, что кто-то решил изобретать новые термины языка или колонизировать существующие термины для другой цели (хорошим примером этого является отказ разработчиков X от того, что означает «клиент» и «сервер»).

Camel - это оболочка / API на основе Java для промежуточного программного обеспечения между приложениями.

Middleware - это общий термин для программного обеспечения, предоставляющего услуги интерпретации между объектами, которые не имеют общего языка или типов данных.

Вот что такое верблюд, внизу. Мы можем описать описание, отметив, что оно обеспечивает промежуточное ПО типа EIP.

Он не обеспечивает самого промежуточного ПО, поскольку он не может знать детали того, что приложения должны связывать. Но он предоставляет API для создания инвариантных частей этого промежуточного программного обеспечения (создает начальную точку, создает конечную точку, создает условия для начала и окончания и т. Д.),

Надеюсь, это поможет.


Да, это, наверное, немного поздно. Но одно, чтобы добавить к комментариям всех остальных, это то, что Camel на самом деле является набором инструментов, а не полным набором функций. Это следует учитывать при разработке и выполнении различных преобразований и преобразовании протоколов.

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


Диаграмма лучше, чем тысячи описаний. Эта диаграмма иллюстрирует архитектуру Camel.


Если у вас есть 5-10 минут, я обычно рекомендую людям прочитать эту интеграцию с Apache Camel Джонатаном Анстеем. Это хорошо написанная статья, в которой дается краткое введение и обзор некоторых концепций Camel, и в ней используется пример использования с образцами кода. В нем Джонатан пишет:

Apache Camel - это Java-платформа с открытым исходным кодом, которая фокусируется на упрощении интеграции и большей доступности для разработчиков. Он делает это, предоставляя:

  • конкретные реализации всех широко используемых шаблонов интеграции предприятий (EIPs)
  • подключение к большому разнообразию транспортных средств и API
  • простые в использовании доменные языки (DSL) для подключения EIP и транспорта вместе

Существует также свободная глава Camel in Action, которая представляет Camel в первой главе. Джонатан является соавтором этой книги со мной.


Короче:

Когда требуется подключение / интеграция систем, вам, вероятно, потребуется подключиться к некоторому источнику данных, а затем обработать эти данные в соответствии с вашими бизнес-требованиями.

Для этого:

1) Вы могли бы разработать специальную программу, которая бы это сделала (может потребоваться много времени и трудно понять, поддерживать для другого разработчика)

2) В качестве альтернативы вы можете использовать Apache Camel для стандартизации (у него есть большинство коннекторов, уже разработанных для вас, вам просто нужно настроить его и подключить свой логически называемый процесс):

Camel поможет вам:

  1. Потребляйте данные из любого источника / формата
  2. Обработать эти данные
  3. Выходные данные в любой источник / формат

Используя Apache Camel, вы легко поймете / поддерживаете / расширяете свою систему до другого разработчика.

Apache Camel разработан с использованием корпоративных интеграционных шаблонов. Шаблоны помогают вам эффективно интегрировать системы :-)


На предприятии существует ряд систем различного типа. Некоторые из них могут быть устаревшими системами, в то время как некоторые из них могут быть новыми. Эти системы часто взаимодействуют друг с другом и нуждаются в интеграции. Это взаимодействие или интеграция не так просто, как реализация систем, их форматы сообщений могут отличаться. Один из способов добиться этого - реализовать код, который связывает эти различия. Однако это будет точка-точка интеграции. Если завтра снова, если есть изменение в системе, другое может также быть изменено, что не очень хорошо. Вместо того, чтобы эта точка-точка интеграции, которая вызывает жесткую связь, мы можем реализовать дополнительный слой, чтобы опосредовать различия между системами. Это приводит к ослаблению сцепления и не влияет на наши существующие системы. Apache Camel - это механизм маршрутизации и посредничества, основанный на правилах, который обеспечивает объектную реализацию шаблонов интеграции предприятия на основе Java с использованием API (или декларативного языка Java Domain Specific Language) для настройки правил маршрутизации и посредничества.
Подробное объяснение и примеры можно найти здесь. Учебники Apache Camel


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

Чтобы дать вам перспективу, приведенный ниже Java DSL создаст конечную точку REST, которая сможет принять XML, состоящий из списка продуктов, и разбить его на несколько продуктов и вызвать с ним метод Process BrandProcessor. И просто добавив .parallelProcessing (обратите внимание на часть с комментариями), он будет параллельно обрабатывать все объекты продукта. (Класс продукта - JAXB / XJC, сгенерированный Java-заглушкой из XSD, к которому входной xml ограничивается.) Этот много кода (вместе с несколькими зависимостями Camel) выполнит задание, которое использовалось для получения 100 строк строк кода Java.

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

После добавления идентификатора маршрута и ведения журнала

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);

Это всего лишь образец, Camel - это нечто большее, чем просто конечная точка REST. Просто взгляните на список подключаемых компонентов http://camel.apache.org/components.html


Определение с другой точки зрения:

Apache Camel - это интеграционная структура. Он состоит из некоторых библиотек Java, которые помогают реализовать проблемы интеграции на платформе Java. Что это значит и как оно отличается от API-интерфейсов с одной стороны и Enterprise Service Bus (ESB) с другой стороны, описано в моей статье « Когда использовать Apache Camel ».


Создание описания проекта не должно быть сложным.

Я говорю:

Apache Camel - это технологический клей для обмена сообщениями с маршрутизацией. Он объединяет стартовые и конечные точки обмена сообщениями, позволяющие переносить сообщения из разных источников в разные пункты назначения. Например: JMS -> JSON, HTTP -> JMS или трафик FTP -> JMS, HTTP -> JMS, JSON -> JMS

Википедия говорит:

Apache Camel - это механизм маршрутизации и посредничества, основанный на правилах, который обеспечивает реализацию на основе объектов Java шаблонов Enterprise Integration с использованием API (или декларативного языка Java Domain Specific Language) для настройки правил маршрутизации и посредничества. Язык, специфичный для домена, означает, что Apache Camel может поддерживать безопасное интеллектуальное завершение правил маршрутизации в вашей среде IDE с использованием обычного кода Java без огромного количества файлов конфигурации XML; хотя поддержка XML внутри Spring также поддерживается.

Увидеть? Это было не сложно?


Это похоже на соединение трубопровода

From---->To

Между u можно добавить столько каналов и труб. Кран может быть любого типа автоматическим или ручным для потока данных и маршрутом для направления потока.

Он поддерживает и реализует все типы и виды обработки. И для такой же обработки многие подходы, потому что у нее много компонентов, и каждый компонент также может обеспечить желаемый результат, используя различные методы под ним.

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

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

От / до ---- папки, direct, seda, vm может быть что угодно


Я хочу описать это более доступным способом ...

Чтобы понять, что такое Apache Camel, вам нужно понять, что такое схемы интеграции с корпорацией.

Начнем с того, что мы, по-видимому, уже знаем: шаблон Singleton, шаблон Factory и т. Д .; Это всего лишь способы организации вашего решения проблемы, но они сами не являются решениями. Эти модели были проанализированы и извлечены для всех нас «Бандой четырех», когда они опубликовали свою книгу « Шаблоны дизайна» . Они спасли некоторые из нас огромные усилия, думая о том, как лучше всего структурировать наш код.

Подобно «Банду четырех», Грегор Хохпе и Бобби Вульф создали книгу « Интеграционные схемы предприятия» (EIP), в которой они предлагают и документируют набор новых шаблонов и чертежей для того, как мы могли бы наилучшим образом проектировать большие системы на основе компонентов, где компоненты могут быть работающих на одном и том же процессе или на другой машине.

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

Итак, что такое Apache Camel?

Apache Camel предлагает вам интерфейсы для EIP, базовых объектов, общеупотребительных реализаций, средств отладки, системы конфигурации и многих других помощников, которые сэкономят вам массу времени, когда вы захотите реализовать свое решение для выполнения EIP.

Возьмите MVC. MVC довольно прост в теории, и мы можем реализовать его без какой-либо помощи в каркасе. Но хорошие рамки MVC предоставляют нам структуру, готовую к использованию, и прошли лишнюю милю, и придумали все другие «боковые» вещи, которые вам нужны, когда вы создаете большой проект MVC, и поэтому мы используем их большую часть времени.

Это именно то, что Apache Camel для EIP. Это полная готовая к производству инфраструктура для людей, которые хотят реализовать свое решение для соблюдения EIP.





enterprise-integration