Статьи

Представляем OpenHub Framework

В этой статье описывается среда 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. Мы создали полный стек приложений со следующими библиотеками и фреймворками:

OpenHub application architecture

Архитектура

OpenHub нейтрален по отношению к базе данных и серверу приложений. OpenHub поддерживает как локальные, так и облачные установки.

Платформа OpenHub была создана с учетом гибкости — вы можете использовать / расширять реализацию из Camel, OpenHub или написать свою собственную.

Зачем использовать OpenHub Framework?

OpenHub поставляется с корпоративными функциями, такими как модель асинхронного обмена сообщениями, поддержка кластеров и собственная консоль администратора.

Следующие шаблоны реализованы в модели асинхронного обмена сообщениями :

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

Нет никаких ограничений для синхронных сообщений с точки зрения производительности — это так же быстро, как Apache Camel. Для асинхронных сообщений мы используем базу данных по умолчанию для сохранения состояний — хотя это может быть узким местом в некоторых случаях с точки зрения производительности, у него все еще есть много преимуществ. До сих пор мы не достигли пределов производительности в наших реальных проектах, но мы бы не рекомендовали его для действительно требовательных к производительности проектов. С другой стороны, мы считаем, что у каждой компании есть база данных, и поэтому мы также хотели бы повторно использовать ее для OpenHub. Тем не менее, в вашей компании есть возможность использовать системы JMS / MQ для поддержки асинхронного обмена сообщениями.

OpenHub's admin console GUI

Консоль администратора

Создать новый проект

Создайте новый проект 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
  
    <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 вместе

Мы создали референсный проект с базовой интеграцией сценариев.

OpenHub's reference project structure

Структура проекта

источники