Статьи

Выпущен Apache Camel 2.18 — Что включено

На этой неделе был выпущен Apache Camel 2.18.0 . Этот выпуск является важным выпуском, который я выделю в этом посте.

2018

Java 8

Camel 2.18 — первый выпуск, который требует Java 1.8 (например, легко запоминающийся Camel 2.18 = Java 1.8. Camel 2.17 = Java 1.7). Мы проявили осторожный подход и сохранили обратную совместимость с Camel API в том смысле, что в качестве конечного пользователя вы можете взять исходный код существующего приложения Camel и повторно скомпилировать его с Java 1.8 и Camel 2.18, и у вас все должно быть хорошо.

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

Мы также осторожно ввели несколько лямбда / функциональных API-интерфейсов Java 8 в Java RouteBuilder, который можно использовать в предикатах и ​​преобразованиях сообщений. Вы можете посмотреть маленький пример на GitHub .

Стартеры весенней загрузки

Начиная с Camel 2.15 мы поддерживали Spring Boot, но в этом выпуске мы курировали все компоненты Camel, чтобы выровнять и заставить их работать как первоклассные стартовые компоненты Spring Boot . Это означает, что вы должны использовать -starter как ваши зависимости, такие как camel-kafka-starter.

Автозагрузка Spring Boot

Все компоненты Camel теперь генерируют исходный код автоконфигурации Spring Boot, что означает, что вы можете конфигурировать компоненты, форматы данных, языки и т. Д., Используя конфигурацию Spring Boot. Например, в файле application.properties. Кроме того, такие инструменты, как IDEA, Eclipse и т. Д., Которые поддерживают Spring Boot, будут иметь дополнения кода при редактировании файла application.properties.

сб-авто

Никола Ферраро, которому помогают реализовать, разместил запись в блоге с более подробной информацией.

Проверка работоспособности весенней загрузки

Apache Camel поставляется с проверкой работоспособности, интегрированной с Spring Boot, если вы используете приводы. Проверка работоспособности выполняет грубую проверку зерна на предмет правильности запуска Camel. Мы планируем внедрить более глубокий API проверки работоспособности в Camel, чтобы отдельные компоненты могли участвовать в проверке. Например, проверить, может ли компонент подключиться к удаленной системе и т. Д.

WildFly-Swarm Camel

Проект WildFly Swarm также имеет отличную поддержку Apache Camel. Однако такое развитие событий происходит в проекте wildfly-camel. WildFly-Camel выпустила версию 4.3.0, которая поддерживает Camel 2.18.0.

Автоматическая документация

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

Как разработчик Camel, вы можете думать, что это не имеет большого значения, но на самом деле это так. Это гарантирует, что все параметры всегда на 100% актуальны в документации. Это также позволяет инструментам получать доступ к этой информации как во время разработки, так и во время выполнения. hawtio может во время выполнения отображать подробную информацию обо всех ваших конечных точках и включать документацию для каждой опции, как показано ниже:

верблюд-hawtio-док

У нас также есть плагин Maven, который может сканировать весь ваш исходный код и сообщать о неверной настройке конечных точек Camel. Этот плагин в настоящее время размещен на fabric8, где мы можем быстрее внедрять инновации. Однако, когда плагин станет более зрелым, мы планируем передать исходный код проекту Apache Camel, который будет включен из коробки.

XML XSD полностью документирован

XML XSD для Spring и Blueprint теперь также включает документацию для конфигурации, которую вы можете выполнять вне маршрутов, например, для других и глобальных конфигураций.

FluentProducerTemplate

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

1
template().withBody("Hello World).withHeader("foo", 123").withHeader("bar", 456).to("jms:queue:beer").send();

Продюсер продюсер

Компонент Rest позволяет теперь вызывать службы REST (как клиент), где вы можете выбрать один из следующих компонентов Camel для транспорта HTTP: http, http4, netty4-http, jetty, restlet, undertow. Вы также можете обратиться к существующему API-документу swagger и включить camel-swagger-java в classpath, чтобы автоматическая проверка конечной точки отдыха была настроена на использование допустимых операций / параметров отдыха.

Прерывание цепи с использованием Hystrix

Мы добавили встроенную поддержку использования Netflixx Hystrix в качестве разрыва цепи на ваших маршрутах Camel. Есть пример в комплекте .

Ниже приведен еще один пример из примера, когда Spring Boot вызывает службу, работающую в WildFly Swarm, которая работает в кластере Kubernetes (или локальном), о котором я недавно говорил.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
public void configure() throws Exception {
 
from("timer:foo?period=2000")
 
.hystrix()
 
.to("netty4-http:http://{{service:helloswarm}}/say")
 
.onFallback()
 
.setBody().constant("Nobody want to talk to me")
 
.end()
 
.log("${body}");
 
}

Отслеживание сообщений Zipkin

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

Служебный вызов

Service Call EIP позволяет вызывать удаленные сервисы с обнаружением сервисов из подключаемого реестра сервисов. Например, вы можете использовать EtDC, Консул, Лента, Kubernetes и другие идут.

Новые компоненты

Как обычно, каждый выпуск поставляется с рядом новых компонентов:

  • camel-asterisk — для взаимодействия с серверами АТС Asterisk
  • camel-cm-sms — для отправки SMS-сообщений с помощью SM SMS-шлюза.
  • верблюд-консул — для интеграции вашего приложения с консулом.
  • camel-ehcache — для взаимодействия с кешем Ehcache 3.
  • camel-flink — Мосты Разъемы Camel с задачами Apache Flink.
  • camel-lumberjack — для получения журналов по протоколу дровосека (используется, например, Filebeat)
  • camel-tape — Для использования ленты Netflixx с сервисным вызовом EIP.
  • camel-servicenow — для управления облаком с помощью ServiceNow.
  • camel-telegram — Для обмена сообщениями с Telegram.
  • camel-zipkin — Для отслеживания потоков / времени сообщений Camel с помощью zipkin.
  • Верблюд-хроника — для взаимодействия с OpenHFT Chronicle-Engine.

Новые форматы данных

И у нас также есть один новый формат данных:

  • Верблюд-Джонсон — Apache Johnzon — это реализация JSR-353 (API JavaTM для обработки JSON).

Важная информация при обновлении

Старые версии Spring, такие как 3.x и 4.0.x, были удалены. Пользователи OSGi на ServiceMix / Karaf также должны использовать Karaf 4.x. Однако он может работать на некоторых старых версиях Karaf, но официально не поддерживается. В следующем выпуске поддержка старых версий наверняка пропадет

Пользователи OSGi с Spring-DM должны установить модуль camel-spring-dm, поскольку Spring DM был удален из camel-spring. Spring Boot 1.4.x теперь требуется.

Вы можете найти более подробную информацию в заметках о выпуске Camel .

Что дальше

Мы будем работать над выпуском Camel 2.19, где мы сможем еще больше улучшить траекторию. Выпуск Camel 2.18 дает нам новый путь на Java 8. Мы также хотим завершить перенос документации и работать на новом веб-сайте. Надеюсь, мы также сможем получить хороший логотип.

Вслед за верблюдом 2.19 мы начнем работу над верблюдом 3.x. Но это будет обсуждаться в сообществе верблюдов в первую очередь. Однако до конца этого года мы сосредоточимся на верблюде 2.19, который запланирован на начало 1 квартала 2017 года.