MuleSoft - Краткое руководство

ESB означает Enterprise Service Busкоторый, по сути, является промежуточным программным обеспечением для интеграции различных приложений через шинную инфраструктуру. По сути, это архитектура, разработанная для обеспечения единообразных средств перемещения работы между интегрированными приложениями. Таким образом, с помощью архитектуры ESB мы можем соединять различные приложения через коммуникационную шину и давать им возможность обмениваться данными независимо друг от друга.

Реализация ESB

Основная цель архитектуры ESB - отделить системы друг от друга и позволить им обмениваться данными стабильным и управляемым способом. Реализация ESB может быть выполнена с помощью‘Bus’ и ‘Adapter’ следующим образом -

  • Концепция «шины», которая достигается с помощью сервера обмена сообщениями, такого как JMS или AMQP, используется для разделения различных приложений друг от друга.

  • Между приложениями и шиной используется концепция «адаптера», отвечающего за взаимодействие с серверным приложением и преобразование данных из формата приложения в формат шины.

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

Адаптер также может выполнять другие действия, такие как безопасность, мониторинг, обработка ошибок и управление маршрутизацией сообщений.

Руководящие принципы ESB

Мы можем назвать эти принципы основными принципами интеграции. Они следующие -

  • Orchestration - Интеграция двух или более сервисов для достижения синхронизации между данными и процессом.

  • Transformation - Преобразование данных из канонического формата в формат, специфичный для приложения.

  • Transportation - Обработка согласования протокола между форматами, такими как FTP, HTTP, JMS и т. Д.

  • Mediation - Предоставление нескольких интерфейсов для поддержки нескольких версий службы.

  • Non-functional consistency - Обеспечение механизма управления транзакциями и безопасности.

Необходимость ESB

Архитектура ESB позволяет нам интегрировать различные приложения, через которые каждое приложение может обмениваться данными. Ниже приведены некоторые рекомендации о том, когда использовать ESB.

  • Integrating two or more applications - Использование архитектуры ESB выгодно, когда есть необходимость интегрировать два или более сервисов или приложений.

  • Integration of more applications in future - Предположим, что если мы захотим добавить больше сервисов или приложений в будущем, это можно будет легко сделать с помощью архитектуры ESB.

  • Using multiple protocols - В случае, если нам нужно использовать несколько протоколов, таких как HTTP, FTP, JMS и т. Д., ESB - правильный вариант.

  • Message routing - Мы можем использовать ESB в случае, если нам требуется маршрутизация сообщений на основе содержимого сообщения и других подобных параметров.

  • Composition and consumption - ESB можно использовать, если нам нужно опубликовать сервисы для композиции и потребления.

Интеграция P2P против интеграции ESB

С увеличением количества приложений перед разработчиками встал большой вопрос, как подключить разные приложения? Ситуация была обработана путем ручного кодирования соединения между различными приложениями. Это называетсяpoint-to-point integration.

Rigidityэто наиболее очевидный недостаток двухточечной интеграции. Сложность возрастает с увеличением количества подключений и интерфейсов. Недостатки интеграции P-2-P приводят нас к интеграции ESB.

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

Для управления интеграцией ESB имеет следующие два компонента:

  • Service Registry- Mule ESB имеет реестр / репозиторий сервисов, где публикуются и регистрируются все сервисы, представленные в ESB. Он действует как точка обнаружения, откуда можно использовать услуги и возможности других приложений.

  • Centralized Administration - Как следует из названия, он обеспечивает представление транзакционных потоков выполнения взаимодействий, происходящих внутри ESB.

ESB Functionality- Аббревиатура VETRO обычно используется для описания функциональных возможностей ESB. Это выглядит следующим образом -

  • V(Проверить) - Как следует из названия, он проверяет проверку схемы. Требуется проверяющий синтаксический анализатор и актуальная схема. Одним из примеров является XML-документ, подтверждающий актуальность схемы.

  • E(Обогатить) - добавляет в сообщение дополнительные данные. Цель состоит в том, чтобы сделать сообщение более значимым и полезным для целевой службы.

  • T(Преобразование) - преобразует структуру данных в канонический формат или из канонического формата. Примеры: преобразование даты / времени, валюты и т. Д.

  • R(Routing) - он будет маршрутизировать сообщение и действовать как привратник конечной точки службы.

  • O(Operate) - основная задача этой функции - вызывать целевую службу или взаимодействовать с целевым приложением. Они работают на сервере.

Шаблон VETRO обеспечивает общую гибкость интеграции и гарантирует, что только согласованные и проверенные данные будут маршрутизироваться через ESB.

Что такое Mule ESB?

Mule ESB - это легкая и хорошо масштабируемая служебная шина предприятия (ESB) на основе Java и платформа интеграции, предоставляемая MuleSoft. Mule ESB позволяет разработчику легко и быстро подключать приложения. Независимо от различных технологий, используемых приложениями, Mule ESB обеспечивает простую интеграцию приложений, позволяя им обмениваться данными. Mule ESB имеет следующие две редакции -

  • Community Edition
  • Enterprise Edition

Преимущество Mule ESB в том, что мы можем легко перейти с сообщества Mule ESB на Mule ESB enterprise, потому что обе версии построены на общей кодовой базе.

Особенности и возможности Mule ESB

Mule ESB обладает следующими функциями:

  • Он имеет простой графический дизайн с возможностью перетаскивания.
  • Mule ESB поддерживает визуальное отображение и преобразование данных.
  • Пользователь может получить возможность использовать сотни готовых сертифицированных разъемов.
  • Централизованный мониторинг и администрирование.
  • Он обеспечивает надежные возможности обеспечения безопасности предприятия.
  • Он предоставляет возможность управления API.
  • Существует безопасный шлюз данных для облачного / локального подключения.
  • Он предоставляет реестр сервисов, в котором публикуются и регистрируются все сервисы, представленные в ESB.
  • Пользователи могут управлять через веб-консоль управления.
  • Быструю отладку можно выполнить с помощью анализатора потока службы.

Мотивами проекта Mule были:

  • чтобы упростить работу программистов,

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

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

История

Историческая перспектива проекта Mule такова:

SourceForge проект

Проект Mule был запущен как проект SourceForge в апреле 2003 года, и через 2 года его первая версия была выпущена и перенесена на CodeHaus. API универсального объекта сообщения (UMO) лежал в основе его архитектуры. Идея UMO API заключалась в том, чтобы унифицировать логику, сохраняя их изолированными от базовых транспортов.

Версия 1.0

Он был выпущен в апреле 2005 года и содержал множество транспортов. Во многих других версиях основное внимание уделялось отладке и добавлению новых функций.

Версия 2.0 (принятие Spring 2)

Spring 2 как конфигурация и структура проводки была принята в Mule 2, но оказалась серьезной переделкой из-за недостаточной выразительности требуемой конфигурации XML. Эта проблема была решена, когда в Spring 2 была представлена ​​конфигурация на основе XML-схемы.

Сборка с Maven

Самым большим улучшением, упростившим использование Mule как во время разработки, так и во время развертывания, стало использование Maven. Начиная с версии 1.3, он начал создаваться с помощью Maven.

MuleSource

В 2006 году MuleSource был включен «для поддержки и поддержки быстро растущего сообщества, использующего Mule в критически важных корпоративных приложениях». Это оказалось ключевой вехой для Mule Project.

Конкуренты Mule ESB

Ниже приведены некоторые из основных конкурентов Mule ESB.

  • WSO2 ESB
  • Сервисная шина Oracle
  • WebSphere Message Broker
  • Платформа Aurea CX
  • Фьорано ESB
  • WebSphere DataPower Gateway
  • Структура бизнес-процессов рабочего дня
  • Сервисная шина Talend Enterprise
  • Сервисная шина JBoss Enterprise
  • Менеджер по обслуживанию iWay

Основная концепция мула

Как уже говорилось, Mule ESB - это легкая и хорошо масштабируемая служебная шина предприятия (ESB) и платформа интеграции на основе Java. Независимо от различных технологий, используемых приложениями, Mule ESB обеспечивает простую интеграцию приложений, позволяя им обмениваться данными. В этом разделе мы обсудим основную концепцию Mule, которая поможет реализовать такую ​​интеграцию.

Для этого нам нужно понять его архитектуру, а также составные части.

Архитектура

Архитектура Mule ESB имеет три уровня, а именно транспортный уровень, уровень интеграции и уровень приложения, как показано на следующей диаграмме:

Как правило, для настройки и настройки развертывания Mule можно выполнить следующие три типа задач:

Разработка сервисных компонентов

Эта задача включает разработку или повторное использование существующих POJO или Spring Beans. POJOs - это класс с атрибутами, который генерирует методы получения и установки, облачные соединители. С другой стороны, Spring Beans содержит бизнес-логику для обогащения сообщений.

Сервисная оркестровка

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

Интеграция

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

Строительные блоки

Конфигурация мула имеет следующие строительные блоки -

Весенние бобы

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

Агенты

По сути, это сервис, созданный в Anypoint Studio до Mule Studio. Агент создается при запуске сервера и будет уничтожен после остановки сервера.

Коннектор

Это программный компонент, настроенный с параметрами, специфичными для протоколов. Он в основном используется для управления использованием протокола. Например, коннектор JMS настроен сConnection и этот соединитель будет совместно использоваться различными организациями, отвечающими за фактическую связь.

Глобальная конфигурация

Как следует из названия, этот строительный блок используется для установки глобальных свойств и настроек.

Глобальные конечные точки

Его можно использовать на вкладке «Глобальные элементы», которую можно использовать сколько угодно раз в потоке -

Глобальный процессор сообщений

Как следует из названия, он наблюдает или изменяет сообщение или поток сообщений. Трансформаторы и фильтры являются примерами Global Message Processor.

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

Filters- Это фильтр, который решит, какое сообщение Mule следует обработать. Фильтр в основном определяет условия, которые должны быть выполнены, чтобы сообщение было обработано и направлено в службу.

Модели

В отличие от Агентов, это логическая группировка сервисов, которые создаются в студии. У нас есть свобода запускать и останавливать все службы внутри конкретной модели.

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

Endpoints- Его можно определить как объект, на котором службы будут получать входящие (получать) и исходящие (отправлять) сообщения. Услуги подключаются через конечные точки.

поток

Обработчик сообщений использует потоки для определения потока сообщений между источником и целью.

Структура сообщения Mule

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

Как видно на диаграмме выше, Mule Message состоит из двух основных частей:

Заголовок

Это не что иное, как метаданные сообщения, которые дополнительно представлены следующими двумя свойствами:

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

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

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

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

Полезная нагрузка

Фактическое бизнес-сообщение, переносимое объектом сообщения, называется полезной нагрузкой.

Переменные

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

Flow variables - Эти переменные применяются только к потоку, в котором они существуют.

Session variables - Эти переменные применяются ко всем потокам в одном приложении.

Record variables - Эти переменные применяются только к записям, обрабатываемым как часть пакета.

Вложения и дополнительная полезная нагрузка

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

В предыдущих главах мы изучили основы Mule ESB. В этой главе давайте узнаем, как его установить и настроить.

Предпосылки

Перед установкой Mule на наш компьютер нам необходимо выполнить следующие предварительные требования:

Комплект для разработки Java (JDK)

Перед установкой MULE убедитесь, что ваша система поддерживает версию Java. JDK 1.8.0 рекомендуется для успешной установки Mule в вашей системе.

Операционная система

Следующие операционные системы поддерживаются Mule -

  • MacOS 10.11.x
  • HP-UX 11iV3
  • AIX 7.2
  • Сервер Windows 2016
  • Сервер Windows 2012 R2
  • Windows 10
  • Windows 8.1
  • Solaris 11.3
  • RHEL 7
  • Сервер Ubuntu 18.04
  • Ядро Linux 3.13+

База данных

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

  • Oracle 11g
  • Oracle 12c
  • MySQL 5.5+
  • IBM DB2 10
  • PostgreSQL 9
  • Дерби 10
  • Microsoft SQL Server 2014

Системные Требования

Перед установкой Mule в вашу систему он должен соответствовать следующим системным требованиям:

  • Минимум 2 ГГц ЦП или 1 виртуальный ЦП в виртуализированных средах
  • Минимум 1 ГБ ОЗУ
  • Минимум 4 ГБ для хранения

Скачать Mule

Чтобы скачать двоичный файл Mule 4, щелкните ссылку https://www.mulesoft.com/lp/dl/mule-esb-enterprise и он приведет вас на официальную веб-страницу MuleSoft следующим образом:

Предоставив необходимую информацию, вы можете получить двоичный файл Mule 4 в формате Zip.

Установить и запустить Mule

Теперь, после загрузки двоичного файла Mule 4, распакуйте его и установите переменную среды с именем MULE_HOME для каталога Mule внутри извлеченной папки.

Например, переменная среды в средах Windows и Linux / Unix может быть установлена ​​для версии 4.1.5 в каталоге загрузок следующим образом:

Окна Windows

$ env:MULE_HOME=C:\Downloads\mule-enterprise-standalone-4.1.5\

Среды Unix / Linux

$ export MULE_HOME=~/Downloads/mule-enterprise-standalone-4.1.5/

Теперь, чтобы проверить, работает ли Mule в вашей системе без каких-либо ошибок, используйте следующие команды:

Окна Windows

$ $MULE_HOME\bin\mule.bat

Среды Unix / Linux

$ $MULE_HOME/bin/mule

Приведенные выше команды запустят Mule в режиме переднего плана. Если Mule запущен, мы не можем выполнять какие-либо другие команды на терминале. Нажатиеctrl-c в терминале, остановит Mule.

Запустить Mule Services

Мы можем запустить Mule как службу Windows, а также как демон Linux / Unix.

Mule как служба Windows

Чтобы запустить Mule как службу Windows, нам нужно выполнить следующие шаги:

Step 1 - Сначала установите его с помощью следующей команды -

$ $MULE_HOME\bin\mule.bat install

Step 2 - После установки мы можем запустить mule как службу Windows с помощью следующей команды:

$ $MULE_HOME\bin\mule.bat start

Мул как демон Linux / Unix

Чтобы запустить Mule в качестве демона Linux / Unix, нам нужно выполнить следующие шаги:

Step 1 - Установите его с помощью следующей команды -

$ $MULE_HOME/bin/mule install

Step 2 - После установки мы можем запустить mule как службу Windows с помощью следующей команды -

$ $MULE_HOME/bin/mule start

Example

В следующем примере Mule запускается как демон Unix -

$ $MULE_HOME/bin/mule start
MULE_HOME is set to ~/Downloads/mule-enterprise-standalone-4.1.5
MULE_BASE is set to ~/Downloads/mule-enterprise-standalone-4.1.5
Starting Mule Enterprise Edition...
Waiting for Mule Enterprise Edition.................
running: PID:87329

Развертывание приложений Mule

Мы можем развернуть наши приложения Mule с помощью следующих шагов:

Step 1 - Сначала запустите Мул.

Step 2 - После запуска Mule мы можем развернуть наши приложения Mule, переместив файлы пакета JAR в папку apps каталог в $MULE_HOME.

Остановить службы Mule

Мы можем использовать stopкоманда остановить Мула. Например, в следующем примере Mule запускается как демон Unix -

$ $MULE_HOME/bin/mule stop
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Stopping Mule Enterprise Edition...
Stopped Mule Enterprise Edition.

Мы также можем использовать removeкоманда для удаления службы Mule или демона из нашей системы. В следующем примере Mule удаляется как демон Unix -

$ $MULE_HOME/bin/mule remove
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Detected Mac OSX:
Mule Enterprise Edition is not running.
Removing Mule Enterprise Edition daemon...

Anypoint Studio от MuleSoft - это удобный IDE (integration development environment)используется для разработки и тестирования приложений Mule. Это IDE на основе Eclipse. Мы можем легко перетащить коннекторы из палитры Mule. Другими словами, Anypoint Studio - это IDE на основе Eclipse для разработки потока и т. Д.

Предпосылки

Перед установкой Mule во всех ОС, то есть Windows, Mac и Linux / Unix, нам необходимо выполнить следующие предварительные требования.

Java Development Kit (JDK)- Перед установкой Mule убедитесь, что ваша система поддерживает версию Java. JDK 1.8.0 рекомендуется для успешной установки Anypoint в вашей системе.

Скачивание и установка Anypoint Studio

Процедура загрузки и установки Anypoint Studio в разных операционных системах может отличаться. Далее необходимо выполнить шаги для загрузки и установки Anypoint Studio в различных операционных системах -

В Windows

Чтобы загрузить и установить Anypoint Studio в Windows, нам нужно выполнить следующие действия:

Step 1 - Сначала перейдите по ссылке https://www.mulesoft.com/lp/dl/studio и выберите операционную систему Windows из списка сверху вниз, чтобы загрузить студию.

Step 2 - Теперь извлеките его в ‘C:\’ Корневая папка.

Step 3 - Откройте извлеченную Anypoint Studio.

Step 4- Чтобы принять рабочее пространство по умолчанию, нажмите OK. Вы получите приветственное сообщение, когда оно загрузится в первый раз.

Step 5 - Теперь нажмите кнопку «Начать», чтобы использовать Anypoint Studio.

В OS X

Чтобы загрузить и установить Anypoint Studio в OS X, нам нужно выполнить следующие действия:

Step 1 - Сначала перейдите по ссылке https://www.mulesoft.com/lp/dl/studio и скачиваем студию.

Step 2- А теперь извлеките это. Если вы используете версию ОС Sierra, не забудьте переместить извлеченное приложение в/Applications folder перед запуском.

Step 3 - Откройте извлеченную Anypoint Studio.

Step 4- Чтобы принять рабочее пространство по умолчанию, нажмите OK. Вы получите приветственное сообщение, когда оно загрузится в первый раз.

Step 5 - Теперь нажмите Get Started кнопку, чтобы использовать Anypoint Studio.

Если вы собираетесь использовать собственный путь к своему рабочему пространству, обратите внимание, что Anypoint Studio не расширяет ~ тильду, используемую в системах Linux / Unix. Следовательно, при определении рабочей области рекомендуется использовать абсолютный путь.

В Linux

Чтобы загрузить и установить Anypoint Studio в Linux, нам нужно выполнить следующие действия:

Step 1 - Сначала перейдите по ссылке https://www.mulesoft.com/lp/dl/studio и выберите операционную систему Linux из списка сверху вниз, чтобы загрузить студию.

Step 2 - А теперь извлеките это.

Step 3 - Затем откройте извлеченный Anypoint Studio.

Step 4- Чтобы принять рабочее пространство по умолчанию, нажмите OK. Вы получите приветственное сообщение, когда оно загрузится в первый раз.

Step 5 - Теперь нажмите кнопку «Начать», чтобы использовать Anypoint Studio.

Если вы собираетесь использовать собственный путь к своему рабочему пространству, обратите внимание, что Anypoint Studio не расширяет ~ тильду, используемую в системах Linux / Unix. Следовательно, при определении рабочей области рекомендуется использовать абсолютный путь.

Также рекомендуется установить GTK версии 2, чтобы использовать полные темы Studio в Linux.

Особенности Anypoint Studio

Ниже приведены некоторые функции Anypoint studio, повышающие производительность при создании приложений Mule.

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

  • Anypoint studio предоставляет нам визуальный редактор для настройки файлов определений API и доменов Mule.

  • Он имеет встроенную среду модульного тестирования, повышающую производительность.

  • Anypoint studio предоставляет нам встроенную поддержку для развертывания в CloudHub.

  • Он имеет возможность интеграции с Exchange для импорта шаблонов, примеров, определений и других ресурсов из другой организации Anypoint Platform.

Редакторы Anypoint Studio помогают нам разрабатывать наши приложения, API, свойства и файлы конфигурации. Помимо проектирования, это также помогает нам их редактировать. Для этого у нас есть редактор конфигурационных файлов Mule. Чтобы открыть этот редактор, дважды щелкните XML-файл приложения в/src/main/mule.

Для работы с нашим приложением у нас есть следующие три вкладки в редакторе файлов конфигурации Mule.

Вкладка "поток сообщений"

Эта вкладка дает визуальное представление рабочего процесса. По сути, он содержит холст, который помогает нам визуально проверять наши потоки. Если вы хотите добавить обработчики событий из палитры Mule на холст, просто перетащите их, и они отразятся на холсте.

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

Вкладка "Глобальные элементы"

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

Вкладка XML конфигурации

Как следует из названия, он содержит XML, который определяет ваше приложение Mule. Все изменения, которые вы здесь делаете, будут отражаться на холсте, а также в представлении свойств обработчика событий на вкладке «Поток сообщений».

Просмотры

Для активного редактора Anypoint studio предоставляет нам графическое представление метаданных и свойств нашего проекта с помощью представлений. Пользователь может перемещать, закрывать, а также добавлять представления в проекте Mule. Ниже приведены некоторые представления по умолчанию в Anypoint studio.

Проводник пакетов

Основная задача представления Package Explorer - отображать папки и файлы проекта, входящие в проект Mule. Мы можем расширить или свернуть папку проекта Mule, щелкнув стрелку рядом с ней. Папку или файл можно открыть, дважды щелкнув по нему. Взгляните на его скриншот -

Палитра Мул

В представлении «Палитра мула» отображаются обработчики событий, такие как области действия, фильтры и маршрутизаторы управления потоком, а также модули и связанные с ними операции. Основные задачи представления Mule Palette заключаются в следующем:

  • Это представление помогает нам управлять модулями и соединителями в нашем проекте.
  • Мы также можем добавлять новые элементы из Exchange.

Взгляните на его скриншот -

Свойства мула

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

  • DataSense Explorer, который предоставляет информацию в реальном времени о структуре данных нашей полезной нагрузки.

  • Входящие и исходящие свойства, если они доступны, или переменные.

Ниже скриншот -

Приставка

Каждый раз, когда мы создаем или запускаем приложение Mule, встроенный сервер Mule отображает список событий и проблем, если таковые имеются, о которых сообщает Studio. Представление консоли содержит консоль этого встроенного сервера Mule. Взгляните на его скриншот -

Просмотр проблем

При работе над проектом Mule мы можем столкнуться с множеством проблем. Все эти проблемы отображаются в представлении «Проблемы». Ниже скриншот

Перспективы

В Anypoint Studio это набор представлений и редакторов в определенном порядке. В Anypoint Studio есть два вида перспектив:

Mule Design Perspective - Это перспектива по умолчанию, которую мы получаем в Studio.

Mule Debug Perspective - Еще одна перспектива, предоставляемая Anypoint Studio, - это перспектива отладки Mule.

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

В этой главе мы собираемся создать наше первое приложение Mule в Anypoint Studio от MuleSoft. Для его создания нам сначала нужно запустить Anypoint Studio.

Запуск Anypoint Studio

Щелкните Anypoint Studio, чтобы запустить его. Если вы запускаете его впервые, вы увидите следующее окно -

Пользовательский интерфейс Anypoint Studio

После того, как вы нажмете кнопку «Перейти к рабочей области», вы попадете в пользовательский интерфейс Anypoint Studio следующим образом:

Шаги по созданию приложения Mule

Чтобы создать приложение Mule, выполните следующие действия:

Создание нового проекта

Самый первый шаг при создании приложения Mule - это создание нового проекта. Это можно сделать, пройдя по путиFILE → NEW → Mule Project как показано ниже -

Название проекта

После нажатия на новый проект Mule, как описано выше, откроется новое окно с запросом имени проекта и других спецификаций. Дайте название проекту,TestAPP1', а затем нажмите кнопку «Готово».

После того, как вы нажмете кнопку «Готово», откроется рабочее пространство, созданное для вашего MuleProject, а именно: ‘TestAPP1’. Вы можете увидеть всеEditors и Views описано в предыдущей главе.

Настройка коннектора

Здесь мы собираемся создать простое приложение Mule для HTTP Listener. Для этого нам нужно перетащить соединитель HTTP-прослушивателя из палитры Mule и поместить его в рабочую область, как показано ниже -

Теперь нам нужно его настроить. Щелкните значок зеленого цвета + после настройки коннектора в разделе «Основные настройки», как показано выше.

Нажав кнопку ОК, вы вернетесь на страницу свойств HTTP Listener. Теперь нам нужно указать путь на вкладке «Общие». В этом конкретном примере мы предоставили/FirstAPP как имя пути.

Настройка коннектора Set Payload

Теперь нам нужно взять коннектор Set Payload. Нам также нужно указать его значение на вкладке настроек следующим образом:

This is my first Mule Application, это имя, указанное в этом примере.

Запуск приложения Mule

Теперь сохраните его и нажмите Run as Mule Application как показано ниже -

Мы можем проверить это в консоли, которая развертывает приложение следующим образом:

Это показывает, что вы успешно создали свое первое приложение Mule.

Проверка приложения Mule

Теперь нам нужно проверить, работает ли наше приложение. Go to POSTMAN, приложение Chrome и введите URL: http:/localhost:8081. Он показывает сообщение, которое мы предоставили при создании приложения Mule, как показано ниже -

DataWeave - это, по сути, язык выражений MuleSoft. Он в основном используется для доступа и преобразования данных, полученных через приложение Mule. Среда выполнения Mule отвечает за выполнение сценария и выражений в нашем приложении Mule, DataWeave сильно интегрирована со средой выполнения Mule.

Особенности языка DataWeave

Ниже приведены некоторые важные особенности языка DataWeave.

Данные можно очень легко преобразовать из одного формата в другой. Например, мы можем преобразовать application / json в application / xml. Входная полезная нагрузка выглядит следующим образом -

{
   "title": "MuleSoft",
   "author": " tutorialspoint.com ",
   "year": 2019
}

Ниже приведен код в DataWeave для преобразования -

%dw 2.0
output application/xml
---
{
   order: {
      'type': 'Tutorial', 
      'title': payload.title, 
      'author': upper(payload.author), 
      'year': payload.year
   }
}

Далее output полезная нагрузка следующая -

<?xml version = '1.0' encoding = 'UTF-8'?>
<order>
   <type>Tutorial</type>
   <title>MuleSoft</title>
   <author>tutorialspoint.com</author>
   <year>2019</year>
</order>

Компонент преобразования может использоваться для создания сценариев, выполняющих как простые, так и сложные преобразования данных.

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

Предпосылки

Перед использованием скриптов DataWeave на нашем компьютере нам необходимо выполнить следующие предварительные требования:

  • Anypoint Studio 7 требуется для использования скриптов Dataweave.

  • После установки Anypoint Studio нам нужно настроить проект с компонентом Transform Message, чтобы использовать скрипты DataWeave.

Шаги по использованию скрипта DataWeave с примером

Чтобы использовать скрипт DataWeave, нам нужно выполнить следующие шаги:

Step 1

Во-первых, нам нужно создать новый проект, как мы делали в предыдущей главе, используя File → New → Mule Project.

Step 2

Далее нам нужно указать название проекта. В этом примере мы даем имя,Mule_test_script.

Step 3

Теперь нам нужно перетащить Transform Message component из Mule Palette tab в canvas. Это показано ниже -

Step 4

Далее в Transform Message componentНа вкладке «Просмотр» нажмите «Предварительный просмотр», чтобы открыть панель предварительного просмотра. Мы можем расширить область исходного кода, щелкнув пустой прямоугольник рядом с Preview.

Step 5

Теперь мы можем начать писать скрипты на языке DataWeave.

пример

Ниже приведен простой пример объединения двух строк в одну:

В приведенном выше скрипте DataWeave есть пара "ключ-значение" ({ myString: ("hello" ++ "World") }) который объединит две строки в одну.

Модули сценариев упрощают пользователям использование языка сценариев в Mule. Проще говоря, модуль сценариев может обмениваться пользовательской логикой, написанной на языке сценариев. Сценарии можно использовать как реализации или преобразователи. Их можно использовать для оценки выражений, т. Е. Для управления маршрутизацией сообщений.

Mule имеет следующие поддерживаемые языки сценариев -

  • Groovy
  • Python
  • JavaScript
  • Ruby

Как установить модули сценариев?

Собственно, Anypoint Studio поставляется со скриптовыми модулями. Если вы не найдете модуль в палитре Mule, его можно добавить с помощью+Add Module. После добавления мы можем использовать операции модуля сценариев в нашем приложении Mule.

Пример реализации

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

Мы уже знаем, как настроить компонент HTTP Listener; поэтому мы собираемся обсудить настройку скриптовых модулей. Нам нужно выполнить шаги, написанные ниже, чтобы настроить модуль сценариев -

Step 1

Найдите модуль сценариев в палитре Mule и перетащите EXECUTE работа модуля сценариев в вашем потоке, как показано выше.

Step 2

Теперь откройте вкладку «Выполнить конфигурацию», дважды щелкнув ее.

Step 3

Под General вкладку, нам нужно указать код в Code text window как показано ниже -

Step 4

Наконец, нам нужно выбрать Engineиз исполняемого компонента. Список двигателей приведен ниже -

  • Groovy
  • Nashorn(javaScript)
  • jython(Python)
  • jRuby(Ruby)

XML приведенного выше примера выполнения в редакторе XML конфигурации выглядит следующим образом:

<scripting:execute engine="jython" doc:name = "Script">
   <scripting:code>
      def factorial(n):
         if n == 0: return 1
      return n * factorial(n-1)
      result = factorial(10)
   </scripting:code>
</scripting:execute>

Источники сообщений

Mule 4 имеет упрощенную модель, чем сообщение Mule 3, что упрощает согласованную работу с данными через соединители без перезаписи информации. В модели сообщений Mule 4 каждое событие Mule состоит из двух вещей:a message and variables associated with it.

Сообщение Mule имеет полезную нагрузку и его атрибуты, где атрибутом в основном являются метаданные, такие как размер файла.

А переменная содержит произвольную информацию о пользователе, такую ​​как результат операции, вспомогательные значения и т. Д.

Входящий

Входящие свойства в Mule 3 теперь становятся атрибутами в Mule 4. Как мы знаем, входящие свойства хранят дополнительную информацию о полезной нагрузке, полученной через источник сообщения, но теперь в Mule 4 это делается с помощью атрибутов. Атрибуты имеют следующие преимущества -

  • С помощью атрибутов мы легко можем увидеть, какие данные доступны, потому что атрибуты строго типизированы.

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

Ниже приведен пример типичного сообщения в Mule 4:

Исходящий

Исходящие свойства в Mule 3 должны быть явно указаны коннекторами и транспортами Mule для отправки дополнительных данных. Но в Mule 4 каждый из них может быть установлен отдельно, используя выражение DataWeave для каждого из них. Не вызывает никаких побочных эффектов в основном потоке.

Например, нижеприведенное выражение DataWeave будет выполнять HTTP-запрос и генерировать заголовки и параметры запроса без необходимости устанавливать свойства сообщения. Это показано в приведенном ниже коде -

<http:request path = "M_issue" config-ref="http" method = "GET">
   <http:headers>#[{'path':'input/issues-list.json'}]</http:headers>
   <http:query-params>#[{'provider':'memory-provider'}]</http:query-params>
</http:request>

Обработчик сообщений

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

Категоризация процессора Mule

Ниже приведены категории процессора Mule, основанные на функциях.

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

  • Components - Эти процессоры сообщений являются гибкими по своей природе и выполняют бизнес-логику, реализованную на различных языках, таких как Java, JavaScript, Groovy, Python или Ruby.

  • Filters - Они фильтруют сообщения и позволяют продолжать обработку в потоке только определенных сообщений на основе определенных критериев.

  • Routers - Этот процессор сообщений используется для управления потоком сообщений для маршрутизации, изменения последовательности или разделения.

  • Scopes - Эй, в основном оборачивают фрагменты кода с целью определения детального поведения в потоке.

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

  • Business Events - В основном они собирают данные, связанные с ключевыми показателями эффективности.

  • Exception strategies - Эти обработчики сообщений обрабатывают ошибки любого типа, возникающие во время обработки сообщений.

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

Ниже приведены типы шаблонов конфигурации, предоставляемые Mule.

  • Простой шаблон обслуживания
  • Bridge
  • Validator
  • HTTP прокси
  • Прокси WS

Настройка компонента

В Anypoint studio мы можем выполнить следующие шаги, чтобы настроить компонент:

Step 1

Нам нужно перетащить компонент, который мы хотим использовать в нашем приложении Mule. Например, здесь мы используем компонент прослушивателя HTTP следующим образом:

Step 2

Затем дважды щелкните компонент, чтобы открыть окно конфигурации. Для прослушивателя HTTP это показано ниже -

Step 3

Мы можем настроить компонент в соответствии с требованиями нашего проекта. Скажем, например, мы сделали для компонента прослушивателя HTTP -

Основные компоненты являются одними из важных строительных блоков рабочего процесса в приложении Mule. Логика обработки события Mule обеспечивается этими основными компонентами. В Anypoint studio, чтобы получить доступ к этим основным компонентам, вы можете щелкнуть Ядро из палитры Mule, как показано ниже -

Ниже приведены различные core components and their working in Mule 4 -

Индивидуальные бизнес-мероприятия

Этот основной компонент используется для сбора информации о потоках, а также о процессорах сообщений, которые обрабатывают бизнес-транзакции в приложении Mule. Другими словами, мы можем использовать компонент Custom Business Event, чтобы добавить в наш рабочий процесс следующее:

  • Metadata
  • Ключевые показатели эффективности (KPI)

Как добавить KPI?

Ниже приведены шаги по добавлению ключевых показателей эффективности в наш поток в приложении Mule.

Step 1 - Следуй за Мулом Palette → Core → Components → Custom Business Event, чтобы добавить компонент Custom Business Event в рабочий процесс в приложении Mule.

Step 2 - Щелкните компонент, чтобы открыть его.

Step 3 - Теперь нам нужно указать значения для отображаемого имени и имени события.

Step 4 - Чтобы получить информацию из полезной нагрузки сообщения, добавьте KPI следующим образом:

  • Дайте имя (ключ) для KPI ( отслеживание: элемент метаданных ) и значение. Имя будет использоваться в поисковом интерфейсе Runtime Manager.

  • Задайте значение, которое может быть любым выражением Mule.

пример

Следующая таблица состоит из списка KPI с именем и значением -

имя Выражение / значение
Список учеников: Нет # [полезная нагрузка ['RollNo']]
Имя ученика # [полезная нагрузка ['Имя']]

Динамическая оценка

Этот основной компонент используется для динамического выбора скрипта в приложении Mule. Мы также можем использовать хардкорный скрипт через компонент Transform Message Component, но использование компонента Dynamic Evaluate - лучший способ. Этот основной компонент работает следующим образом:

  • Во-первых, он оценивает выражение, которое должно привести к другому сценарию.
  • Затем он оценивает этот сценарий для получения окончательного результата.

Таким образом, это позволяет нам динамически выбирать сценарий, а не жестко его кодировать.

пример

Ниже приведен пример выбора сценария из базы данных с помощью параметра запроса Id и сохранения этого сценария в переменной с именем MyScript . Теперь компонент динамической оценки получит доступ к переменной для вызова сценариев, чтобы он мог добавить переменную имени изUName параметр запроса.

XML-конфигурация потока приведена ниже -

<flow name = "DynamicE-example-flow">
   <http:listener config-ref = "HTTP_Listener_Configuration" path = "/"/>
   <db:select config-ref = "dbConfig" target = "myScript">
      <db:sql>#["SELECT script FROM SCRIPTS WHERE ID = 
         $(attributes.queryParams.Id)"]
      </db:sql>
   </db:select>
   <ee:dynamic-evaluate expression = "#[vars.myScript]">
      <ee:parameters>#[{name: attributes.queryParams.UName}]</ee:parameters>
   </ee:dynamic-evaluate>
</flow>

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

Настройка динамического оценивания

В следующей таблице представлен способ настройки компонента Dynamic Evaluate -

Поле Значение Описание пример
Выражение Выражение DataWeave Он определяет выражение, которое будет оценено в окончательном сценарии. выражение = "# [vars.generateOrderScript]"
Параметры Выражение DataWeave Он определяет пары ключ-значение. # [{присоединяющийся: 'и', id: payload.user.id}]

Компонент ссылки потока

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

Характеристики

Ниже приведены характеристики этого основного компонента -

  • Этот основной компонент позволяет нам обрабатывать весь указанный поток как отдельный компонент текущего потока.

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

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

За работой

Работу компонента Flow Ref можно понять с помощью следующей диаграммы -

На схеме показан порядок обработки в приложении Mule, когда один поток ссылается на другой поток в том же приложении. Когда запускается основной рабочий поток в приложении Mule, событие Mule проходит через все и выполняет поток, пока событие Mule не достигнет ссылки Flow.

После достижения ссылки потока событие Mule выполняет указанный поток от начала до конца. Как только событие Mule завершает выполнение Ref Flow, оно возвращается в основной поток.

пример

Для лучшего понимания, let us use this component in Anypoint Studio. В этом примере мы используем HTTP-прослушиватель для GET сообщения, как мы это делали в предыдущей главе. Итак, мы можем перетащить компонент и настроить. Но для этого примера нам нужно добавить компонент подпотока и установить компонент полезной нагрузки под ним, как показано ниже -

Далее нам нужно настроить Set Payload, двойным щелчком по нему. Здесь мы даем значение «Субпоток выполнен», как показано ниже -

После успешной настройки компонента подпотока нам нужно установить компонент ссылки потока после Set Payload основного потока, который мы можем перетащить из палитры Mule, как показано ниже -

Затем, при настройке компонента ссылки на поток, нам нужно выбрать имя потока на вкладке Generic, как показано ниже -

Теперь сохраните и запустите это приложение. Чтобы проверить это, перейдите в POSTMAN и введитеhttp:/localhost:8181/FirstAPP в строке URL-адреса, и вы получите сообщение «Подпоток выполнен».

Компонент регистратора

Основной компонент, называемый регистратором, помогает нам отслеживать и отлаживать наше приложение Mule, регистрируя важную информацию, такую ​​как сообщения об ошибках, уведомления о состоянии, полезные данные и т. Д. В AnyPoint studio они появляются в Console.

Преимущества

Ниже приведены некоторые преимущества компонента Logger.

  • Мы можем добавить этот основной компонент в любое место рабочего процесса.
  • Мы можем настроить его на регистрацию указанной нами строки.
  • Мы можем настроить его на вывод написанного нами выражения DataWeave.
  • Мы также можем настроить его на любую комбинацию строк и выражений.

пример

В приведенном ниже примере отображается сообщение «Hello World» в поле Set Payload в браузере, а также запись сообщения.

Ниже приведена XML-конфигурация потока в приведенном выше примере.

<http:listener-config name = "HTTP_Listener_Configuration" host = "localhost" port = "8081"/>
<flow name = "mymuleprojectFlow">
   <http:listener config-ref="HTTP_Listener_Configuration" path="/"/>
   <set-payload value="Hello World"/>
   <logger message = "#[payload]" level = "INFO"/>
</flow>

Компонент передачи сообщения

Компонент Transform Message, также называемый компонентом Transfer, позволяет преобразовать входные данные в новый формат вывода.

Методы построения трансформации

Мы можем построить нашу трансформацию с помощью следующих двух методов:

Drag-and-Drop Editor (Graphical View)- Это первый и наиболее часто используемый метод построения нашей трансформации. В этом методе мы можем использовать визуальный сопоставитель этого компонента для перетаскивания элементов входящей структуры данных. Например, на следующей диаграмме в двух древовидных представлениях показаны ожидаемые структуры метаданных ввода и вывода. Строки, соединяющие поле ввода и вывода, представляют собой сопоставление между двумя представлениями дерева.

Script View- Визуальное отображение преобразования также может быть представлено с помощью DataWeave, языка для кода Mule. Мы можем кодировать некоторые расширенные преобразования, такие как агрегация, нормализация, группировка, объединение, разделение, поворот и фильтрация. Пример приведен ниже -

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

  • CSV
  • Schema
  • Схема плоского файла
  • JSON
  • Класс объекта
  • Простой тип
  • Схема XML
  • Имя и тип столбца Excel
  • Имя и тип столбца фиксированной ширины

Конечные точки в основном включают в себя те компоненты, которые запускают или инициируют обработку в рабочем потоке приложения Mule. Они называютсяSource в Anypoint Studio и Triggersв Центре дизайна Mule. Одна из важных конечных точек в Mule 4:Scheduler component.

Конечная точка планировщика

Этот компонент работает с временными условиями, что означает, что он позволяет нам запускать поток всякий раз, когда выполняется временное условие. Например, планировщик может запускать событие для запуска рабочего потока Mule каждые, скажем, 10 секунд. Мы также можем использовать гибкое выражение Cron для запуска конечной точки планировщика.

Важные моменты о планировщике

При использовании события Scheduler нам нужно позаботиться о некоторых важных моментах, как указано ниже:

  • Конечная точка планировщика следует часовому поясу машины, на которой работает среда выполнения Mule.

  • Предположим, что если приложение Mule запущено в CloudHub, планировщик будет следовать часовому поясу региона, в котором работает рабочий CloudHub.

  • В любой момент времени может быть активным только один поток, инициированный конечной точкой планировщика.

  • В кластере времени выполнения Mule конечная точка планировщика запускается или запускается только на основном узле.

Способы настройки планировщика

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

Параметры для настройки планировщика (для фиксированного интервала)

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

Frequency- Он в основном описывает, с какой частотой конечная точка планировщика будет запускать поток Mule. Единицу времени для этого можно выбрать в поле Time Unit. Если вы не укажете для этого никаких значений, он будет использовать значение по умолчанию, равное 1000. С другой стороны, если вы укажете 0 или отрицательное значение, тогда также будет использоваться значение по умолчанию.

Start Delay- Это количество времени, которое мы должны подождать, прежде чем запускать поток Mule в первый раз после запуска приложения. Значение задержки запуска выражается в той же единице времени, что и частота. Его значение по умолчанию - 0.

Time Unit- Он описывает единицу времени как для частоты, так и для задержки запуска. Возможные значения единицы времени: миллисекунды, секунды, минуты, часы, дни. Значение по умолчанию - миллисекунды.

Параметры для настройки планировщика (для выражения Cron)

Фактически, Cron - это стандарт, используемый для описания информации о времени и дате. Если вы используете гибкое выражение Cron для запуска Scheduler, конечная точка Scheduler отслеживает каждую секунду и создает событие Mule всякий раз, когда выражение Quartz Cron совпадает с настройкой времени и даты. С помощью выражения Cron событие может запускаться только один раз или через определенные промежутки времени.

В следующей таблице приведены выражения даты и времени для шести требуемых настроек:

Атрибут Значение
Секунды 0-59
Минуты 0-59
Часы работы 0-23
День месяца 1-31
Месяц 1-12 или ЯНВ-ДЕКАБРЬ
День недели 1-7 или ВС-СБ

Ниже приведены некоторые примеры выражений Quartz Cron, поддерживаемых конечной точкой планировщика.

  • ½ * * * * ? - означает, что планировщик запускается каждые 2 секунды в день, каждый день.

  • 0 0/5 16 ** ? - означает, что планировщик запускается каждые 5 минут, начиная с 16:00 до 16:55, каждый день.

  • 1 1 1 1, 5 * ? - означает, что планировщик запускается в первый день января и в первый день апреля каждого года.

пример

Следующий код регистрирует сообщение «привет» каждую секунду -

<flow name = "cronFlow" doc:id = "ae257a5d-6b4f-4006-80c8-e7c76d2f67a0">
   <doc:name = "Scheduler" doc:id = "e7b6scheduler8ccb-c6d8-4567-87af-aa7904a50359">
      <scheduling-strategy>
         <cron expression = "* * * * * ?" timeZone = "America/Los_Angeles"/>
      </scheduling-strategy>
   </scheduler>
   <logger level = "INFO" doc:name = "Logger" 
      doc:id = "e2626dbb-54a9-4791-8ffa-b7c9a23e88a1" message = '"hi"'/>
</flow>

Управление потоком (маршрутизаторы)

Основная задача компонента Flow Control - принять входное событие Mule и направить его в одну или несколько отдельных последовательностей компонентов. По сути, это маршрутизация входящего события Mule к другим последовательностям компонентов. Поэтому его еще называют маршрутизаторами. Маршрутизаторы Choice и Scatter-Gather являются наиболее часто используемыми маршрутизаторами в компоненте Flow Control.

Выбор маршрутизатора

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

Принципиальная схема Choice Router

Эффект от использования маршрутизатора Choice аналогичен добавлению условной обработки к потоку или if/then/elseблок кода в большинстве языков программирования. Ниже приводится схематическая диаграмма маршрутизатора выбора, имеющего три варианта. Среди них один - маршрутизатор по умолчанию.

Маршрутизатор Scatter-Gather

Другой наиболее часто используемый обработчик событий маршрутизации - это Scatter-Gather component. Как следует из названия, он работает на принципах разброса (копирование) и сбора (объединение). Мы можем понять его работу с помощью следующих двух пунктов:

  • Во-первых, этот маршрутизатор копирует (Scatter) событие Mule на два или более параллельных маршрута. Условие состоит в том, что каждый маршрут должен быть последовательностью из одного или нескольких обработчиков событий, которые подобны подпотоку. Каждый маршрут в этом случае будет создавать событие Mule с использованием отдельного потока. Каждое событие Mule будет иметь свою полезную нагрузку, атрибуты, а также переменные.

  • Затем этот маршрутизатор собирает созданные события Mule из каждого маршрута и затем объединяет их вместе в новое событие Mule. После этого он передает это объединенное событие Mule следующему обработчику событий. Здесь условие состоит в том, что маршрутизатор SG передает консолидированное событие Mule следующему обработчику событий только после успешного завершения каждого маршрута.

Принципиальная схема маршрутизатора Scatter-Gather

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

Обработка ошибок маршрутизатором Scatter-Gather

Во-первых, мы должны знать, какие ошибки могут возникать в компоненте Scatter-Gather. Любая ошибка может быть сгенерирована в обработчиках событий, в результате чего компонент Scatter-Gather выдаст ошибку типаMule: COMPOSITE_ERROR. Эта ошибка будет выдана компонентом SG только после сбоя или завершения каждого маршрута.

Чтобы обработать этот тип ошибки, try scopeможет использоваться в каждом маршруте компонента Scatter-Gather. Если ошибка успешно обработанаtry scope, тогда маршрут наверняка сможет сгенерировать событие Mule.

Трансформеры

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

Удалить переменный трансформатор

Как следует из названия, этот компонент принимает имя переменной и удаляет эту переменную из события Mule.

Настройка удаления переменного трансформатора

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

Старший Нет Поле и объяснение
1

Display Name (doc:name)

Мы можем настроить это, чтобы отображать уникальное имя для этого компонента в нашем рабочем потоке Mule.

2

Name (variableName)

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

Установить трансформатор полезной нагрузки

С помощью set-payloadкомпонент, мы можем обновить полезную нагрузку сообщения, которая может быть буквальной строкой или выражением DataWeave. Не рекомендуется использовать этот компонент для сложных выражений или преобразований. Его можно использовать для простых, таких какselections.

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

Поле Применение Объяснение
Значение (значение) Обязательный Поле значений требуется для установки полезной нагрузки. Он будет принимать буквальную строку или выражение DataWeave, определяющее, как установить полезную нагрузку. Примеры похожи на «какую-то строку»
Тип пантомимы (mimeType) Необязательный Это необязательно, но представляет собой mime-тип значения, присвоенного полезной нагрузке сообщения. Примеры похожи на text / plain.
Кодировка (кодировка) Необязательный Это также необязательно, но представляет собой кодировку значения, присвоенного полезной нагрузке сообщения. Примеры похожи на UTF-8.

Мы можем установить полезную нагрузку через код конфигурации XML -

With Static Content - Следующий код конфигурации XML установит полезную нагрузку с использованием статического содержимого -

<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }" 
   mimeType = "application/json" encoding = "UTF-8"/>

With Expression Content - Следующий код конфигурации XML установит полезную нагрузку с использованием содержимого Expression -

<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>

В приведенном выше примере сегодняшняя дата будет добавлена ​​к сообщению «Привет».

Установить переменный трансформатор

С помощью set variableкомпонент, мы можем создать или обновить переменную для хранения значений, которые могут быть простыми буквальными значениями, такими как строки, полезные данные сообщения или объекты атрибутов, для использования в потоке приложения Mule. Не рекомендуется использовать этот компонент для сложных выражений или преобразований. Его можно использовать для простых, таких какselections.

Настройка трансформатора набора переменных

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

Поле Применение Объяснение
Имя переменной (variableName) Обязательный Это обязательное поле, которое представляет собой имя переменной. Давая имя, следуйте соглашению об именовании, так как оно должно содержать числа, символы и подчеркивания.
Значение (значение) Обязательный Поле значений требуется для установки переменной. Он будет принимать буквальную строку или выражение DataWeave.
Тип пантомимы (mimeType) Необязательный Это необязательно, но представляет собой mime-тип переменной. Примеры похожи на text / plain.
Кодировка (кодировка) Необязательный Это также необязательно, но представляет собой кодировку переменной. Примеры похожи на ISO 10646 / Unicode (UTF-8).

пример

В приведенном ниже примере для переменной будет установлено значение полезной нагрузки сообщения -

Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio

Точно так же в приведенном ниже примере будет установлена ​​переменная для полезной нагрузки сообщения -

Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.

Веб-служба REST

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

Использование веб-служб RESTful

В следующем примере мы будем использовать компонент REST и одну общедоступную службу RESTful, предоставляемую Mule Soft, под названием American Flights details. Он имеет различные детали, но мы собираемся использовать GET:http://training-american-ws.cloudhub.io/api/flightsкоторый вернет все данные о рейсе. Как обсуждалось ранее, REST связан с HTTP, поэтому нам нужны два компонента HTTP - один - Listener, а другой - Request, для этого приложения тоже. На скриншоте ниже показана конфигурация HTTP-прослушивателя -

Настройка и передача аргументов

Конфигурация для HTTP-запроса приведена ниже -

Теперь, согласно нашему потоку рабочего пространства, мы взяли регистратор, чтобы его можно было настроить, как показано ниже -

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

Тестирование приложения

Теперь сохраните и запустите приложение и перейдите в POSTMAN, чтобы проверить окончательный результат, как показано ниже -

Вы можете увидеть подробности полета, используя компонент REST.

Компонент SOAP

Полная форма SOAP Simple Object Access Protocol. По сути, это спецификация протокола обмена сообщениями для обмена информацией при реализации веб-сервисов. Далее мы собираемся использовать SOAP API в Anypoint Studio для доступа к информации с помощью веб-сервисов.

Использование веб-служб на основе SOAP

В этом примере мы собираемся использовать общедоступную службу SOAP с именем Country Info Service, которая сохраняет службы, связанные с информацией о стране. Его адрес WSDL:http://www.oorsprong.org/websamples.countryinfo/countryinfoservice.wso?WSDL

Во-первых, нам нужно перетащить потребление SOAP на наш холст из палитры Mule, как показано ниже -

Настройка и передача аргументов

Затем нам нужно настроить HTTP-запрос, как это сделано в приведенном выше примере, как показано ниже -

Теперь нам также нужно настроить Потребителя веб-службы, как показано ниже -

Вместо Location WSDL нам нужно предоставить веб-адрес WSDL, который указан выше (для этого примера). Как только вы укажете веб-адрес, Studio самостоятельно выполнит поиск службы, порта и адреса. Вам не нужно вводить его вручную.

Передача ответа от веб-службы

Для этого нам нужно добавить регистратор в поток Mule и настроить его для предоставления полезной нагрузки, как показано ниже -

Тестирование приложения

Сохраните и запустите приложение и перейдите в Google Chrome, чтобы проверить окончательный результат. Типhttp://localhist:8081/helloSOAP (для этого примера), и он покажет название страны по коду, как показано на скриншоте ниже -

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

Компоненты ошибки мула

Ошибка мула является результатом сбоя исключения мула и имеет следующие компоненты:

Описание

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

#[error.description]

Тип

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

#[error.errorType]

Причина

Компонент Cause ошибки Mule дает базовый объект java, который вызывает сбой. Его выражение выглядит следующим образом -

#[error.cause]

Сообщение

Компонент сообщения ошибки Mule показывает необязательное сообщение об ошибке. Его выражение выглядит следующим образом -

#[error.errorMessage]

Дочерние ошибки

Компонент « Дочерние ошибки» ошибки Mule предоставляет необязательный набор внутренних ошибок. Эти внутренние ошибки в основном используются такими элементами, как Scatter-Gather, для предоставления агрегированных ошибок маршрута. Его выражение выглядит следующим образом -

#[error.childErrors]

пример

В случае сбоя HTTP-запроса с кодом состояния 401 ошибки Mule выглядят следующим образом:

Description: HTTP GET on resource ‘http://localhost:8181/TestApp’ 
failed: unauthorized (401)
Type: HTTP:UNAUTHORIZED
Cause: a ResponseValidatorTypedException instance
Error Message: { "message" : "Could not authorize the user." }
Старший НЕТ Тип и описание ошибки
1

TRANSFORMATION

Этот тип ошибки указывает на ошибку, возникшую при преобразовании значения. Преобразование - это внутреннее преобразование среды выполнения Mule, а не преобразования DataWeave.

2

EXPRESSION

Этот тип ошибки указывает на ошибку, возникшую при оценке выражения.

3

VALIDATION

Этот тип ошибки указывает на то, что произошла ошибка проверки.

4

DUPLICATE_MESSAGE

Своеобразная ошибка проверки, которая возникает, когда сообщение обрабатывается дважды.

5

REDELIVERY_EXHAUSTED

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

6

CONNECTIVITY

Этот тип ошибки указывает на проблему при установлении соединения.

7

ROUTING

Этот тип ошибки указывает на ошибку, возникшую при маршрутизации сообщения.

8

SECURITY

Этот тип ошибки указывает на то, что произошла ошибка безопасности. Например, получены неверные учетные данные.

9

STREAM_MAXIMUM_SIZE_EXCEEDED

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

10

TIMEOUT

Он указывает тайм-аут при обработке сообщения.

11

UNKNOWN

Этот тип ошибки указывает на возникновение непредвиденной ошибки.

12

SOURCE

Он представляет собой возникновение ошибки в источнике потока.

13

SOURCE_RESPONSE

Он представляет собой возникновение ошибки в источнике потока при обработке успешного ответа.

В приведенном выше примере вы можете увидеть компонент сообщения об ошибке mule.

Типы ошибок

Давайте разберемся с типами ошибок с помощью их характеристик -

  • Первая характеристика типов ошибок Mule заключается в том, что они состоят из обоих, a namespace and an identifier. Это позволяет нам различать типы в зависимости от их домена. В приведенном выше примере тип ошибки -HTTP: UNAUTHORIZED.

  • Вторая и важная характеристика - это то, что тип ошибки может иметь родительский тип. Например, Тип ошибкиHTTP: UNAUTHORIZED имеет MULE:CLIENT_SECURITY как родитель, который, в свою очередь, также имеет родителя с именем MULE:SECURITY. Эта характеристика устанавливает тип ошибки как спецификацию более глобального элемента.

Виды типов ошибок

Ниже приведены категории, в которые попадают все ошибки:

ЛЮБЫЕ

Ошибки в этой категории - это ошибки, которые могут возникать в потоке. Они не такие серьезные и с ними легко справиться.

КРИТИЧЕСКИЙ

Ошибки в этой категории - это серьезные ошибки, которые невозможно обработать. Ниже приведен список типов ошибок в этой категории -

Старший НЕТ Тип и описание ошибки
1

OVERLOAD

Этот тип ошибки указывает на ошибку, возникшую из-за проблемы с перегрузкой. В этом случае исполнение будет отклонено.

2

FATAL_JVM_ERROR

Этот тип ошибки указывает на возникновение фатальной ошибки. Например, переполнение стека.

Тип ошибки CUSTOM

Типы CUSTOM ошибок - это ошибки, определенные нами. Их можно определить при отображении или при возникновении ошибок. Мы должны предоставить конкретное настраиваемое пространство имен для этих типов ошибок, чтобы отличать их от других существующих типов ошибок в приложении Mule. Например, в приложении Mule, использующем HTTP, мы не можем использовать HTTP в качестве настраиваемого типа ошибки.

Категории ошибок мула

В широком смысле ошибки в Mule можно разделить на две категории, а именно: Messaging Errors and System Errors.

Сообщение об ошибке

Эта категория ошибок Mule связана с потоком Mule. Всякий раз, когда проблема возникает в потоке Mule, Mule выдает ошибку обмена сообщениями. Мы можем настроитьOn Error компонент внутри компонента обработчика ошибок для обработки этих ошибок Mule.

Системная ошибка

Системная ошибка указывает на исключение, происходящее на системном уровне. Если событие Mule отсутствует, системная ошибка обрабатывается обработчиком системных ошибок. Обработчик системных ошибок обрабатывает следующие типы исключений:

  • Исключение, возникающее при запуске приложения.
  • Исключение, возникающее при сбое подключения к внешней системе.

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

Обработка ошибок Mule

У Mule есть следующие два обработчика ошибок для обработки ошибок -

Обработчики ошибок при ошибках

Первый обработчик ошибок Mule - это компонент On-Error, который определяет типы ошибок, которые они могут обрабатывать. Как обсуждалось ранее, мы можем настроить компоненты On-Error внутри компонента обработчика ошибок, похожего на область видимости. Каждый поток Mule содержит только один обработчик ошибок, но этот обработчик ошибок может содержать столько областей действия при ошибке, сколько нам нужно. Шаги для обработки ошибки Mule внутри потока с помощью компонента On-Error следующие:

  • Во-первых, всякий раз, когда поток Mule вызывает ошибку, нормальное выполнение потока останавливается.

  • Далее процесс будет перенесен в Error Handler Component что уже есть On Error component для соответствия типам ошибок и выражениям.

  • Наконец, компонент Error Handler направляет ошибку первому On Error scope что соответствует ошибке.

Ниже приведены два типа компонентов с ошибкой, поддерживаемых Mule.

Распространение при ошибке

Компонент распространения при ошибке выполняется, но передает ошибку на следующий уровень и прерывает выполнение владельцем. Транзакция будет отменена, если она будет обработанаOn Error Propagate составная часть.

При ошибке продолжить

Как и компонент распространения при ошибке, компонент продолжения при ошибке также выполняет транзакцию. Единственное условие: если владелец успешно завершил выполнение, то этот компонент будет использовать результат выполнения как результат своего владельца. Транзакция будет зафиксирована, если она будет обработана компонентом On-Error Continue.

Попробуйте компонент Scope

Try Scope - одна из многих новых функций, доступных в Mule 4. Она работает аналогично блоку try в JAVA, в который мы включали код, который может быть исключением, так что его можно обработать, не нарушая весь код.

Мы можем обернуть один или несколько обработчиков событий Mule в Try Scope, и после этого область try будет перехватывать и обрабатывать любое исключение, созданное этими обработчиками событий. Основная работа области видимости try вращается вокруг ее собственной стратегии обработки ошибок, которая поддерживает обработку ошибок во внутреннем компоненте, а не во всем потоке. Поэтому нам не нужно выделять поток в отдельный поток.

Example

Ниже приведен пример использования области действия:

Настройка области попыток для обработки транзакций

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

  • INDIFFERENT [Default]- Если мы выберем эту конфигурацию в блоке try, то дочерние действия не будут рассматриваться как транзакция. В этом случае ошибка не вызывает ни отката, ни фиксации.

  • ALWAYS_BEGIN - Он указывает, что новая транзакция будет запускаться каждый раз при выполнении области действия.

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

В случае каждого проекта исключения заключаются в том, что они неизбежны. Вот почему важно улавливать, классифицировать и обрабатывать исключения, чтобы система / приложение не оставались в несогласованном состоянии. Существует стратегия исключения по умолчанию, которая неявно применяется ко всем приложениям Mule. Откат любой ожидающей транзакции автоматически является стратегией исключения по умолчанию.

Исключения в Mule

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

Какой транспорт важен?

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

File или же HTTPне поддерживает транзакции. Поэтому, если в этих случаях возникает исключение, мы должны управлять им вручную.

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

В случае REST APIs, мы должны помнить, что они должны возвращать правильные коды состояния HTTP. Например, 404 для ресурса, который не найден.

Какой шаблон обмена сообщениями использовать?

При разработке обработчиков исключений мы должны позаботиться о шаблоне обмена сообщениями. Шаблон сообщения может быть синхронным (запрос-ответ) или асинхронным (пожар-забыть).

Synchronous message pattern основан на формате запрос-ответ, что означает, что этот шаблон будет ожидать ответа и будет заблокирован до тех пор, пока ответ не будет возвращен или не истечет время ожидания.

Asynchronous message pattern основан на формате «огонь-забыл», что означает, что этот шаблон предполагает, что запросы в конечном итоге будут обработаны.

Какой это тип исключения?

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

Исключение произошло system/technical issue (например, отключение сети) должны автоматически обрабатываться механизмом повтора.

С другой стороны, произошло исключение by a business issue (например, недопустимые данные) не следует устранять с помощью механизма повторной попытки, потому что повторная попытка нецелесообразна без устранения основной причины.

Зачем категоризировать исключения?

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

Исключения для бизнеса

Основными причинами возникновения бизнес-исключений являются неверные данные или неправильная последовательность операций. Подобные исключения обычно не допускают повторного использования, поэтому настраиватьrollback. Даже применяяretryмеханизм не имеет смысла, потому что повторять попытку без устранения основной причины бесполезно. Чтобы обработать такие исключения, обработка должна быть немедленно остановлена, а исключение отправлено обратно в качестве ответа на очередь недоставленных сообщений. Уведомление также следует отправить в операции.

Исключения, не связанные с бизнесом

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

Стратегии обработки исключений

У Mule есть следующие пять стратегий обработки исключений -

Стратегия исключения по умолчанию

Mule неявно применяет эту стратегию к потокам Mule. Он может обрабатывать все исключения в нашем потоке, но его также можно переопределить, добавив стратегию исключения catch, Choice или Rollback. Эта стратегия исключения откатит все ожидающие транзакции и также записывает исключения. Важной характеристикой этой стратегии исключений является то, что она также регистрирует исключение, если транзакция отсутствует.

Как стратегия по умолчанию, Mule реализует ее, когда в потоке возникает какая-либо ошибка. Мы не можем настроить в AnyPoint studio.

Откат стратегии исключения

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

Example

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

Стратегия перехвата исключений

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

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

Example

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

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

Выбор стратегии исключения

Если вы хотите обработать исключение на основе содержимого сообщения, лучшим выбором будет стратегия выбора исключения. Работа этой стратегии исключения будет следующей:

  • Во-первых, он перехватывает все исключения, возникающие в родительском потоке.
  • Затем он проверяет содержимое сообщения и тип исключения.
  • И, наконец, он направляет сообщение в соответствующую стратегию исключения.

В стратегии исключения выбора может быть несколько стратегий исключения, например Catch или Rollback. В случае, если для этой стратегии исключений не определена стратегия, она направит сообщение в стратегию исключений по умолчанию. Он никогда не выполняет никаких операций фиксации, отката или потребления.

Ссылочная стратегия исключения

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

Мы понимаем, что модульное тестирование - это метод, с помощью которого можно тестировать отдельные единицы исходного кода, чтобы определить, подходят ли они для использования или нет. Программисты на Java могут использовать среду Junit для написания тестовых примеров. Точно так же у MuleSoft также есть фреймворк под названием MUnit, позволяющий нам писать автоматизированные тестовые примеры для наших API и интеграции. Он идеально подходит для среды непрерывной интеграции / развертывания. Одним из самых больших преимуществ фреймворка MUnit является то, что мы можем интегрировать его с Maven и Surefire.

Особенности MUnit

Ниже приведены некоторые из очень полезных функций среды тестирования Mule MUnit.

  • В среде MUnit мы можем создать наш тест Mule, используя код Mule, а также код Java.

  • Мы можем разрабатывать и тестировать наши приложения и API-интерфейсы Mule в графическом или XML-формате в Anypoint Studio.

  • MUnit позволяет нам легко интегрировать тестирование в существующий процесс CI / CD.

  • Он предоставляет автоматически сгенерированные тесты и отчеты о покрытии; следовательно, ручная работа минимальна.

  • Мы также можем использовать локальные DB / FTP / почтовые серверы, чтобы сделать тестирование более переносимым через процесс CI.

  • Это позволяет нам включать или отключать тесты.

  • Мы также можем расширить фреймворк MUnit с помощью плагинов.

  • Это позволяет нам проверять вызовы обработчика сообщений.

  • С помощью среды тестирования MUnit мы можем отключить коннекторы конечных точек, а также конечные точки входящего потока.

  • Мы можем проверять отчеты об ошибках с помощью трассировки стека Mule.

Последний выпуск платформы тестирования Mule MUnit

MUnit 2.1.4 - это последняя версия среды тестирования Mule MUnit. Это требует следующих требований к оборудованию и программному обеспечению -

  • MS Windows 8+
  • Apple Mac OS X 10.10+
  • Linux
  • Java 8
  • Maven 3.3.3, 3.3.9, 3.5.4, 3.6.0

Он совместим с Mule 4.1.4 и Anypoint Studio 7.3.0.

MUnit и Anypoint Studio

Как уже говорилось, MUnit полностью интегрирован в Anypoint studio, и мы можем проектировать и тестировать наши приложения и API Mule графически или в XML в Anypoint studio. Другими словами, мы можем использовать графический интерфейс Anypoint Studio для следующих действий:

  • Для создания и проектирования тестов MUnit
  • Для запуска наших тестов
  • Для просмотра результатов тестирования, а также отчета о покрытии
  • Для отладки тестов

Итак, приступим к обсуждению каждой задачи по очереди.

Создание и проектирование тестов MUnit

Как только вы начнете новый проект, он автоматически добавит новую папку, а именно src/test/munitк нашему проекту. Например, мы начали новый проект Mule, а именноtest_munit, вы можете видеть на изображении ниже, он добавляет вышеупомянутую папку в наш проект.

Теперь, когда вы начали новый проект, есть два основных способа создать новый тест MUnit в Anypoint Studio:

  • By Right-Clicking the Flow - В этом методе нам нужно щелкнуть правой кнопкой мыши конкретный поток и выбрать MUnit из раскрывающегося меню.

  • By Using the Wizard- В этом методе нам нужно использовать мастер для создания теста. Это позволяет нам создавать тест для любого потока в рабочей области.

Мы собираемся использовать способ «Щелкните поток правой кнопкой мыши», чтобы создать тест для конкретного потока.

Во-первых, нам нужно создать поток в рабочей области следующим образом:

Теперь щелкните правой кнопкой мыши этот поток и выберите MUnit, чтобы создать тест для этого потока, как показано ниже -

Он создаст новый набор тестов, названный в честь XML-файла, в котором находится поток. В этом случае,test_munit-test-suite это имя нового набора тестов, как показано ниже -

Ниже приведен редактор XML для вышеуказанного потока сообщений.

Теперь мы можем добавить MUnit обработчик сообщений в набор тестов, перетащив его из палитры Mule.

Если вы хотите создать тест с помощью мастера, выполните File → New → MUnit и это приведет вас к следующему набору тестирования MUnit -

Настройка теста

В Mule 4 у нас есть два новых раздела, а именно MUnit и MUnit Tools, совокупно имея весь процессор сообщений MUnit. Вы можете перетащить любой обработчик сообщений в область тестирования MUnit. Это показано на скриншоте ниже -

Теперь, если вы хотите отредактировать конфигурацию своего костюма или теста в Anypoint Studio, вам необходимо выполнить следующие шаги:

Step 1

Перейти к Package Explorer и щелкните правой кнопкой мыши .xml fileдля вашего набора или теста. Затем выберитеProperties.

Step 2

Теперь в окне свойств нам нужно нажать Run/Debug Settingс. После этого нажмитеNew.

Step 3

На последнем шаге щелкните MUnit под Select Configuration Type окно, а затем щелкните OK.

Запуск теста

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

Запуск набора тестов

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

Позже мы можем увидеть результат в консоли.

Проведение теста

Чтобы запустить конкретный тест, нам нужно выбрать конкретный тест и щелкнуть по нему правой кнопкой мыши. Мы получим то же раскрывающееся меню, что и при запуске набора тестов. Теперь нажмите наRun MUnit Test вариант, как показано ниже -

Там после вывод можно увидеть в консоли.

Просмотр и анализ результатов теста

Anypoint studio отображает результат теста MUnit в MUnit tabна левой панели проводника. Вы можете найти успешные тесты зеленым цветом и неудачные тесты красным, как показано ниже -

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

  • Общий охват приложения
  • Покрытие ресурсов
  • Покрытие потока

Чтобы получить отчет о покрытии, нам нужно щелкнуть «Создать отчет» на вкладке MUnit, как показано ниже -

Отладка теста

Мы можем отлаживать набор тестов, а также тест. Сначала мы увидим, как отлаживать набор тестов.

Отладка набора тестов

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

Затем мы можем увидеть результат в консоли.

Отладка теста

Чтобы отладить конкретный тест, нам нужно выбрать конкретный тест и щелкнуть по нему правой кнопкой мыши. Мы получим то же выпадающее меню, что и при отладке набора тестов. Теперь нажмите наDebug MUnit Testвариант. Это показано на снимке экрана ниже.