В этой статье описывается среда OpenHub — новое интеграционное решение с открытым исходным кодом на основе Apache Camel . Статья отвечает на вопросы, почему вы должны заботиться о другой инфраструктуре интеграции, что такое сильные / слабые свойства и как начать новый проект с OpenHub.
OpenHub — это Apache Camel, но улучшенный…
Конечно, вы можете использовать только Apache Camel, но вам нужно добавить множество других библиотек, проверить их совместимость, подготовить базу данных и сервер приложений, а затем сконфигурировать и настроить все вместе для качества производства. Кроме того, для решения реальных проблем вам часто требуется нечто большее, чем базовая функциональность …
Фреймворк OpenHub объединяет лучшие библиотеки и фреймворки приложений и создает проверенный, протестированный и поддерживаемый стек приложений, который вы можете сразу же приступить к интеграции. Более того, вы получаете корпоративную функциональность, которая доступна только в коммерческих версиях.
Кроме того, OpenHub Framework предлагает эффективный способ структурировать проект, создавать маршруты и тестировать их. Он основан на многолетнем опыте реализации проектов интеграции. Тем не менее, вам решать, какой подход использовать, будь то функциональность OpenHub или напрямую Apache Camel . Нет никаких ограничений в использовании функций Camel. Вы можете выбрать функциональность из Camel, OpenHub Framework или другого стороннего компонента. Конечно, вы можете использовать те же инструменты, что и Apache Camel, например Red Hat® JBoss® Fuse или Hawtio .
Мы рекомендуем использовать лучшее из обоих — использовать платформу OpenHub в качестве основы (определяет структуру проекта, стек приложений, предлагает множество полезных функций для будущего использования…) вместе с любыми необходимыми вам функциями Camel, а также с сторонними инструментами, которые работают с верблюдом Apache .
Архитектура
Платформа OpenHub расширяет Apache Camel, и поэтому базовая архитектура возникла из Apache Camel. Мы создали полный стек приложений со следующими библиотеками и фреймворками:
- Весенний ботинок
- Spring Framework
- Spring Security решает проблемы безопасности
- Spring Web Services является основным компонентом для общения веб-сервисов
- Hibernate для реализации постоянства
- База данных PostgreSQL (или H2 DB для модульных тестов)
- Сервер приложений Apache Tomcat
- Hazelcast кеш / сетка памяти
OpenHub нейтрален по отношению к базе данных и серверу приложений. OpenHub поддерживает как локальные, так и облачные установки.
Платформа OpenHub была создана с учетом гибкости — вы можете использовать / расширять реализацию из Camel, OpenHub или написать свою собственную.
Зачем использовать OpenHub Framework?
OpenHub поставляется с корпоративными функциями, такими как модель асинхронного обмена сообщениями, поддержка кластеров и собственная консоль администратора.
Следующие шаблоны реализованы в модели асинхронного обмена сообщениями :
- концепция «родитель-потомок» — если одно сообщение слишком сложно для обработки, его можно разбить на более мелкие дочерние сообщения (частичные сообщения),
- устаревшие сообщения — эта функция проверяет дубликаты и устаревшие вызовы,
- Воронка предназначена для фильтрации одновременных сообщений в определенной точке интеграции. Эта фильтрация обеспечивает обработку только одного сообщения за один раз, даже в гарантированном порядке (необязательный выбор),
- гарантированный порядок обработки сообщений обеспечивает порядок обработки входящих сообщений,
- подтверждение для вызываемой системы — когда асинхронное сообщение обрабатывается (находится в окончательном состоянии), тогда OpenHub может передавать информацию о результате обработки вызываемой системе,
- мониторинг / оповещения — определяет метрики для просмотра данных базы данных, и если какой-либо показатель превышает его предел, тогда оповещение активируется и может быть выполнена дальнейшая операция.
Нет никаких ограничений для синхронных сообщений с точки зрения производительности — это так же быстро, как Apache Camel. Для асинхронных сообщений мы используем базу данных по умолчанию для сохранения состояний — хотя это может быть узким местом в некоторых случаях с точки зрения производительности, у него все еще есть много преимуществ. До сих пор мы не достигли пределов производительности в наших реальных проектах, но мы бы не рекомендовали его для действительно требовательных к производительности проектов. С другой стороны, мы считаем, что у каждой компании есть база данных, и поэтому мы также хотели бы повторно использовать ее для OpenHub. Тем не менее, в вашей компании есть возможность использовать системы JMS / MQ для поддержки асинхронного обмена сообщениями.
Создать новый проект
Создайте новый проект Maven со ссылкой на родительский артефакт платформы OpenHub:
pom.xml
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" < modelVersion >4.0.0</ modelVersion > < groupId >org.openhubframework.ri</ groupId > < artifactId >ri-openhub</ artifactId > < version >1.0.0-SNAPSHOT</ version > < name >OpenHub - Reference implementation</ name > < packaging >pom</ packaging > < parent > < groupId >org.openhubframework</ groupId > < artifactId >openhub</ artifactId > < version >2.0.0.RC1</ version > </ parent > < modules > < module >openhub-ext</ module > < module >openhub-war</ module > </ modules > ... |
Мы рекомендуем создать следующую структуру проекта как минимум с двумя модулями:
- project — модуль для конкретных маршрутов проекта и бизнес-логики
- war — модуль, который строит этот проект и фреймворк OpenHub вместе
Мы создали референсный проект с базовой интеграцией сценариев.
источники
- Веб: www.openhubframework.org
- Вики: https://openhubframework.atlassian.net
- GitHub OpenHub: https://github.com/OpenWiseSolutions/openhub-framework
- GitHub OpenHub-RI: https://github.com/OpenWiseSolutions/openhub-ri