En

JazzTeam Software Development Company

Agile Java Development

Лучшие практики использования Mule ESB

В данной статье собраны лучшие практики и замечания, которые были выявлены нашими инженерами при работе над проектами, в которых используется интеграционная платформа MuleESB:

1. Naming conventions. Все компоненты mule flow и сами mule flow должны иметь такие названия, которые давали бы четкое понимание того, какую функцию они несут. Стандартные имена компонентов вполне допустимы для элементов трансформации, однако для остальных элементов желательно использовать более понятные имена. Например:

2. Необходимо выносить весь код, который можно использовать в других проектах, в отдельный проект/библиотеку.

3. Стандарт в использовании проперти:

4. В Mule есть очень мощный язык выражений, который позволяет сделать компоненты Mule более динамичными. Например, Mule Expression Language позволяет динамически определять адреса для http-компонента. Для этого достаточно в поле host http-коннектора использовать выражения следующего вида:

5. Для каждого flow необходимо реализовывать свои exception strategy для корректной обработки исключений. Пример mule xml:

  1. <set-payload value="#[exception]" doc:name="Set Payload asException"/>
  2. <component doc:name="IncomingExceptionHandler">
  3. <spring-object bean="IncomingExceptionHandler"/>
  4. </component>

IncomingExceptionHandler java компонент (класс), в котором может происходить обработка возникшего исключения и формирование ответа.

6. SFTP connector best practices.
Кроме стандартных настроек подключения к sftp-серверу, также полезными могут быть:

7. Dataweave transformation. Представляет собой мощный инструмент обработки данных, позволяющий конвертировать данные из/в CSV, Excel, XML, JSON, Java Object и другие форматы. Можно задавать маппинги, значения по умолчанию, добавлять условную логику, фильтровать данные, группировать, строить цепочки трансформаций.

Возможны следующие операции над массивами: селекторы (для выбора элементов), операторы (map, concat, contains и др.)
Также можно использовать Dataweave language для несложных трансформаций. Например:

  1. #[dw("{'payload': payload, 'interface':'CompInvoice'}",
  2. "application/json")]

8. Работа с очередями. Mule позволяет работать с разными очередями, настройки которых имеют много общего (имя очереди, операция — чтение/запись), но при этом со своими особенностями:

9. Профилирование. Для профилирования можно использовать стандартную java/oracle утилиту jvisualvm.exe. Её можно найти по такому пути Windows C:\Program Files\Java\jdk1.8.0_65\bin\jvisualvm.exe (в каталоге bin установленного jdk). Данная утилита позволяет отслеживать используемые ресурсы java приложениями. Можно нагружать приложение и отслеживать затраты ресурсов при определенных нагрузках.

10. MUnit-тесты: mule flows нужно покрывать MUnit-тестами. Тестирование должно осуществляться на различных уровнях. Если flow содержит несколько subflows, то желательно протестировать как subflows по отдельности, так и flow, который их использует. В данном случае MUnit-тесты являются очень хорошим примером по использованию flow и его отдельных частей. Основные алгоритмы нужно покрывать юнит-тестами. Также мы рекомендуем использовать Data Driven Testing.

11. Нагрузочное тестирование. Для тестирования Mule-приложения под нагрузкой можно использовать JMeter. Данный инструмент позволяет проверить работу приложения в условиях поступления большого количества запросов от многих пользователей и предоставить результаты тестирования в удобной для анализа форме.

12. Форматирование xml.

13. Деплой приложения. Для деплоя приложения на CloudHub сервер можно воспользоваться Mule Plugin for Maven. Можно конфигурировать такие параметры как версия Mule, имя пользователя, пароль, environment, бизнес-группу, имя приложения и другие.

14. Все компоненты рекомендуется делать spring бинами. Пример:

 

, , ,

Leave a Reply

Your email address will not be published. Required fields are marked *