Учебники

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

MuleSoft — Введение в Mule ESB

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

Внедрение ESB

Основным направлением архитектуры ESB является разделение систем друг от друга и обеспечение их устойчивой и управляемой связи. Реализация ESB может быть осуществлена ​​с помощью «Bus» и «Adapter» следующим образом:

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

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

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

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

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

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

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

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

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

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

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

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

  • Нефункциональная согласованность — обеспечение механизма управления транзакциями и безопасности.

Оркестровка — интеграция двух или более сервисов для достижения синхронизации между данными и процессами.

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

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

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

Нефункциональная согласованность — обеспечение механизма управления транзакциями и безопасности.

Нужен ESB

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

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

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

  • Использование нескольких протоколов — в случае, если нам нужно использовать несколько протоколов, таких как HTTP, FTP, JMS и т. Д., ESB является правильным вариантом.

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

  • Состав и потребление — ESB можно использовать, если нам нужно публиковать услуги для состава и потребления.

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

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

Использование нескольких протоколов — в случае, если нам нужно использовать несколько протоколов, таких как HTTP, FTP, JMS и т. Д., ESB является правильным вариантом.

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

Состав и потребление — ESB можно использовать, если нам нужно публиковать услуги для состава и потребления.

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

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

P2P интеграция

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

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

ESB Интеграция

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

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

  • Централизованное администрирование — как видно из названия, оно предоставляет представление о транзакционных потоках производительности взаимодействий, происходящих внутри ESB.

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

Централизованное администрирование — как видно из названия, оно предоставляет представление о транзакционных потоках производительности взаимодействий, происходящих внутри ESB.

Функциональность ESB — аббревиатура VETRO обычно используется для обобщения функциональности ESB. Это следующим образом —

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

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

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

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

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

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

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

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

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

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

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

Что такое Mule ESB?

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

  • Community Edition
  • Enterprise Edition

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

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

Мул ESB обладает следующими характеристиками:

  • Он имеет простой графический дизайн перетаскивания.

  • Mule ESB способен визуально отображать и преобразовывать данные.

  • Пользователь может получить возможность установки сотен предварительно сертифицированных разъемов.

  • Централизованный мониторинг и администрирование.

  • Это обеспечивает надежные возможности обеспечения безопасности предприятия.

  • Он предоставляет возможность управления API.

  • Существует безопасный шлюз данных для облачной / локальной сети.

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

  • Пользователи могут управлять через веб-консоль управления.

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

Он имеет простой графический дизайн перетаскивания.

Mule ESB способен визуально отображать и преобразовывать данные.

Пользователь может получить возможность установки сотен предварительно сертифицированных разъемов.

Централизованный мониторинг и администрирование.

Это обеспечивает надежные возможности обеспечения безопасности предприятия.

Он предоставляет возможность управления API.

Существует безопасный шлюз данных для облачной / локальной сети.

Он предоставляет реестр сервисов, в котором публикуются и регистрируются все сервисы, представленные в ESB.

Пользователи могут управлять через веб-консоль управления.

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

MuleSoft — Проект Мул

Мотивация проекта Мул была —

  • сделать вещи проще для программистов,

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

сделать вещи проще для программистов,

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

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

история

Историческая перспектива проекта Мул такова —

Проект 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.

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

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

  • WSO2 ESB
  • Сервисная шина Oracle
  • WebSphere Message Broker
  • Платформа Aurea CX
  • Fiorano ESB
  • WebSphere DataPower Gateway
  • Рабочий день бизнес-процесса
  • Сервисная шина Talend Enterprise
  • Сервисная шина JBoss Enterprise
  • iWay Service Manager

Основная концепция Mule

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

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

Архитектура

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

Концепция ядра Mule

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

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

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

Сервисное управление

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

интеграция

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

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

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

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

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

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

Агенты

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

соединитель

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

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

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

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

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

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

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

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

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

модели

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

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

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

поток

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

Структура сообщения мулов

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

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

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

заголовок

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

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

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

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

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

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

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

переменные

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

Переменные потока — эти переменные применяются только к потоку, в котором они существуют.

Переменные сеанса — эти переменные применяются ко всем потокам в одном приложении.

Переменные записи — эти переменные применяются только к записям, обработанным как часть пакета.

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

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

MuleSoft — Мул в нашей машине

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

Предпосылки

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

Java Development Kit (JDK)

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

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

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

  • MacOS 10.11.x
  • HP-UX 11iV3
  • AIX 7.2
  • Windows 2016 Server
  • Windows 2012 R2 Server
  • Windows 10
  • Windows 8.1
  • Солярис 11.3
  • RHEL 7
  • Ubuntu Server 18.04
  • Linux Kernel 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, нажмите на ссылку www.mulesoft.com/lp/dl/mule-esb-enterprise, и вы перейдете на официальную веб-страницу MuleSoft следующим образом:

Скачать Mule

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

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

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

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

Среды 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 Daemon.

Мул как служба Windows

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

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

$ $MULE_HOME\bin\mule.bat install

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

$ $MULE_HOME\bin\mule.bat start

Mule как Linux / Unix Daemon

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

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

$ $MULE_HOME/bin/mule install

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

$ $MULE_HOME/bin/mule start

пример

В следующем примере 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 с помощью следующих шагов —

Шаг 1 — Сначала запустите Мул.

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

Стоп Мул Сервисы

Мы можем использовать команду остановки, чтобы остановить Мул. Например, в следующем примере 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 Service или Daemon из нашей системы. В следующем примере 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...

MuleSoft — Anypoint Studio

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

Предпосылки

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

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

Загрузка и установка Anypoint Studio

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

На винде

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

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

Скачать Anypoint Studio

Шаг 2 — Теперь распакуйте его в корневую папку «C: \».

Шаг 3 — Откройте извлеченную Anypoint Studio.

Шаг 4 — Чтобы принять рабочее пространство по умолчанию, нажмите ОК. Вы получите приветственное сообщение при первой загрузке.

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

На OS X

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

Шаг 1 — Сначала нажмите на ссылку www.mulesoft.com/lp/dl/studio и загрузите студию.

Скачать Anypoint Studio на OS X

Шаг 2 — Теперь извлеките его. В случае, если вы используете версию ОС Sierra, перед запуском обязательно переместите извлеченное приложение в папку / Applications .

Шаг 3 — Откройте извлеченную Anypoint Studio.

Шаг 4 — Чтобы принять рабочее пространство по умолчанию, нажмите ОК. Вы получите приветственное сообщение при первой загрузке.

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

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

В линуксе

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

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

Скачать на Linux

Шаг 2 — Теперь извлеките его.

Шаг 3 — Затем откройте извлеченную Anypoint Studio.

Шаг 4 — Чтобы принять рабочее пространство по умолчанию, нажмите ОК. Вы получите приветственное сообщение при первой загрузке.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MuleSoft — Откройте для себя Anypoint Studio

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

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

Вкладка «Поток сообщений»

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

Вкладка «Поток сообщений»

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

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

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

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

Вкладка «Конфигурация XML»

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

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

Просмотры

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

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

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

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

Палитра мула

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

  • Это представление помогает нам управлять модулями и разъемами в нашем проекте.

  • Мы также можем добавить новые элементы из Exchange.

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

Мы также можем добавить новые элементы из Exchange.

Посмотрите на его скриншот —

Палитра мула

Mule Properties

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

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

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

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

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

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

Mule Properties

Приставка

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

Приставка

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

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

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

перспективы

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

Перспектива дизайна Mule — это перспектива по умолчанию, которую мы получаем в Studio.

Перспектива отладки Mule — Другая перспектива, предоставленная Anypoint Studio, является Перспективой отладки Mule.

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

MuleSoft — Создание первого приложения Mule

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

Запуск Anypoint Studio

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

Запуск Anypoint Studio

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

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

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

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

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

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

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

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

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

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

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

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

TestAPP1

Конфигурирование коннектора

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

Конфигурирование коннектора

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

Конфигурация прослушивателя HTTP

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

FirstApp Path Name

Настройка Set Payload Connector

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

Соединитель полезной нагрузки

Это мое первое приложение Mule , это имя, указанное в этом примере.

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

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

Запускать как мул приложение

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

Первое приложение Мул

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

Проверка Мула

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

Проверка Мула

MuleSoft — DataWeave Language

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
   }
}

Далее выходная полезная нагрузка выглядит следующим образом —

<?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.

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

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

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

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

Шаг 1

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

Шаг 2

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

Шаг 3

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

DataWeave Script

Шаг 4

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

Шаг 5

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

пример

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

Преобразовать компонент сообщения

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

Компоненты обработчика сообщений и скрипта

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

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

  • Groovy
  • питон
  • JavaScript
  • Рубин

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

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

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

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

Установите скриптовые модули

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

Шаг 1

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

Шаг 2

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

Шаг 3

На вкладке General нам нужно предоставить код в текстовом окне Code, как показано ниже —

Кодовое текстовое окно

Шаг 4

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

  • Groovy
  • Насхорн (JavaScript)
  • Jython (Python)
  • JRuby (Рубин)

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 состоит из двух вещей: сообщения и связанных с ним переменных .

Сообщение 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, основанные на функциях —

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

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

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

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

  • Области — эй, в основном, обернуть фрагменты кода с целью определения детального поведения в потоке.

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

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

  • Стратегии исключений — эти обработчики сообщений обрабатывают ошибки любого типа, возникающие при обработке сообщений.

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

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

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

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

Области — эй, в основном, обернуть фрагменты кода с целью определения детального поведения в потоке.

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

Деловые события — они в основном собирают данные, связанные с ключевыми показателями эффективности.

Стратегии исключений — эти обработчики сообщений обрабатывают ошибки любого типа, возникающие при обработке сообщений.

Основные компоненты и их конфигурация

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

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

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

Конфигурирование компонента

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

Шаг 1

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

Конфигурирование компонента

Шаг 2

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

Окно конфигурации

Шаг 3

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

Компонент прослушивателя HTTP

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

App Mule Palette

Ниже приведены различные основные компоненты и их работа в Mule 4

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

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

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

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

Ниже приведены шаги по добавлению KPI в наш поток в приложении Mule.

Шаг 1 — Следуйте палитре Mule → Core → Компоненты → Custom Business Event , чтобы добавить компонент Custom Business Event в рабочий поток в приложении Mule.

Шаг 2 — Нажмите на компонент, чтобы открыть его.

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

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

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

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

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

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

пример

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

название Выражение / Value
Студенческий RollNo # [Полезной нагрузки [ ‘RollNo’]]
Имя ученика # [Полезной нагрузки [ ‘Name’]]

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

Этот основной компонент используется для динамического выбора скрипта в приложении Mule. Мы также можем использовать хардкорный скрипт через компонент Transform Message, но лучше использовать компонент 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 Он определяет пары ключ-значение. # [{joiner: ‘and’, id: payload.user.id}]

Компонент Flow Reference

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

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

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

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

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

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

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

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

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

Компонент Flow Reference

За работой

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

Основной рабочий поток

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

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

пример

Для лучшего понимания, давайте использовать этот компонент в Anypoint Studio . В этом примере мы используем HTTP-прослушиватель, чтобы получить сообщение, как мы это делали в предыдущей главе. Таким образом, мы можем перетащить компонент и настроить. Но для этого примера нам нужно добавить компонент Sub-flow и установить под него компонент Payload, как показано ниже —

Компонент в Anypoint Studio

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

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

После успешной настройки компонента подпотока нам нужно, чтобы компонент «Ссылка на поток» устанавливался после «Задать полезную нагрузку основного потока», которую мы можем перетаскивать из палитры мула, как показано ниже —

Компонент Sub Flow

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

Выберите имя потока

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

Почтальон

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

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

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

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

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

пример

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

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

Ниже приведена 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, позволяет нам преобразовывать входные данные в новый выходной формат.

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

Мы можем построить наше преобразование с помощью следующих двух методов —

Редактор перетаскивания (графическое представление) — это первый и наиболее используемый метод для построения нашего преобразования. В этом методе мы можем использовать визуальное отображение этого компонента для перетаскивания элементов входящей структуры данных. Например, на следующей диаграмме два древовидных представления показывают ожидаемые структуры метаданных ввода и вывода. Линии, соединяющие входные данные с полем вывода, представляют сопоставление между двумя представлениями дерева.

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

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

Источник Трансформации

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

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

MuleSoft — Конечные точки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Единица времени — описывает единицу времени для частоты и задержки запуска. Возможные значения единицы времени: миллисекунды, секунды, минуты, часы, дни. Значением по умолчанию является Миллисекунды.

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

На самом деле Cron — это стандарт, используемый для описания информации о времени и дате. Если вы используете гибкое выражение Cron для запуска триггера планировщика, конечная точка планировщика отслеживает каждую секунду и создает событие 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 *?: Означает, что планировщик запускает первый день января и первый день апреля каждого года.

½ * * * *?: Означает, что планировщик запускается каждые 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" >
   <scheduler doc:name = "Scheduler" 
      doc:id = "e7b68ccb-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>

MuleSoft — управление потоком и трансформаторы

Контроль потока (Маршрутизаторы)

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

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

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

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

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

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

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

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

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

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

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

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

Принципиальная схема Scatter-Gather Router

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

Scatter Gather Router

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

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

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

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

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

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

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

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

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

поле объяснение
Отображаемое имя (документ: имя) Мы можем настроить это для отображения уникального имени этого компонента в нашем рабочем процессе Mule.
Имя (variableName) Представляет имя переменной для удаления.

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

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

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

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

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

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

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

С содержимым выражения — следующий код конфигурации XML установит полезную нагрузку с использованием содержимого выражения —

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

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

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

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

Настройка заданного переменного трансформатора

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

поле использование объяснение
Имя переменной (variableName) Обязательный Это обязательное поле, и оно представляет имя переменной. При указании имени следуйте соглашению об именах, так как оно должно содержать цифры, символы и подчеркивания.
Значение (значение) Обязательный Значение поля требуется для установки переменной. Он будет принимать литеральную строку или выражение DataWeave.
Mime Type (mimeType) Необязательный Это необязательно, но представляет тип MIME переменной. Примеры как текст / обычный.
Кодировка (кодировка) Необязательный Это также необязательно, но представляет кодировку переменной. Примеры подобны 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.

Веб-сервисы, использующие Anypoint Studio

REST Web Service

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

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

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

Веб-сервис отдыха

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

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

HTTP-запрос

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

Преобразовать полезную нагрузку

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

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

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

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

Компонент SOAP

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

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

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

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

Потребляя мыло

Конфигурирование и передача аргументов

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

Передача аргументов

Теперь нам также необходимо настроить приемника веб-служб, как показано ниже:

Потребитель веб-службы

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

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

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

Ответ передачи

Ответ от веб-службы

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

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

Окончательный вывод

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

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

Компоненты ошибки Mule

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

Описание

Это важный компонент ошибки Mule, который даст описание проблемы. Его выражение таково —

#[error.description]

Тип

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

#[error.errorType]

причина

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

#[error.cause]

Сообщение

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

#[error.errorMessage]

Ошибки ребенка

Компонент Child Errors ошибки 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." }
S.No Тип ошибки и описание
1

ПРЕОБРАЗОВАНИЯ

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

2

ЭКСПРЕССИЯ

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

3

ПРОВЕРКА

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

4

DUPLICATE_MESSAGE

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

5

REDELIVERY_EXHAUSTED

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

6

СОЕДИНЕНИЯ

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

7

МАРШРУТ

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

8

БЕЗОПАСНОСТЬ

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

9

STREAM_MAXIMUM_SIZE_EXCEEDED

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

10

АУТ

Указывает время ожидания при обработке сообщения.

11

НЕИЗВЕСТНЫЙ

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

12

ИСТОЧНИК

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

13

SOURCE_RESPONSE

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

ПРЕОБРАЗОВАНИЯ

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

ЭКСПРЕССИЯ

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

ПРОВЕРКА

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

DUPLICATE_MESSAGE

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

REDELIVERY_EXHAUSTED

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

СОЕДИНЕНИЯ

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

МАРШРУТ

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

БЕЗОПАСНОСТЬ

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

STREAM_MAXIMUM_SIZE_EXCEEDED

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

АУТ

Указывает время ожидания при обработке сообщения.

НЕИЗВЕСТНЫЙ

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

ИСТОЧНИК

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

SOURCE_RESPONSE

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

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

Типы ошибок

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

  • Первыми характеристиками Mule Error Types является то, что он состоит из пространства имен и идентификатора . Это позволяет нам различать типы в зависимости от их домена. В приведенном выше примере тип ошибки HTTP: UNAUTHORIZED .

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

Первыми характеристиками Mule Error Types является то, что он состоит из пространства имен и идентификатора . Это позволяет нам различать типы в зависимости от их домена. В приведенном выше примере тип ошибки HTTP: UNAUTHORIZED .

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

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

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

ЛЮБОЙ

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

КРИТИЧЕСКИЕ

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

S.No Тип ошибки и описание
1

ПЕРЕГРУЗКИ

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

2

FATAL_JVM_ERROR

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

ПЕРЕГРУЗКИ

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

FATAL_JVM_ERROR

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

ТАМОЖЕННЫЙ тип ошибки

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

Категории ошибки Mule

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

Ошибка обмена сообщениями

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

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

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

  • Исключение, возникающее при запуске приложения.

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

Исключение, возникающее при запуске приложения.

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

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

Обработка ошибок мула

Мул имеет следующие два обработчика ошибок для обработки ошибок —

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

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

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

  • Затем процесс будет передан компоненту «Обработчик ошибок», в котором уже есть компонент «При ошибке» для соответствия типам ошибок и выражениям.

  • Наконец, компонент «Обработчик ошибок» направляет ошибку в первую область « При ошибке», которая соответствует этой ошибке.

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

Затем процесс будет передан компоненту «Обработчик ошибок», в котором уже есть компонент «При ошибке» для соответствия типам ошибок и выражениям.

Наконец, компонент «Обработчик ошибок» направляет ошибку в первую область « При ошибке», которая соответствует этой ошибке.

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

Ниже приведены два типа компонентов On-Error, поддерживаемых Mule:

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

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

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

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

Попробуйте Scope Component

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

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

пример

Ниже приведен пример использования try scope —

Попробуйте Scope

Настройка области действия try для обработки транзакций

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

Настройка Try Scope

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

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

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

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

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

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

MuleSoft — Обработка исключений Mule

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

Исключения в Муле

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

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

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

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

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

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

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

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

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

Шаблон асинхронного сообщения основан на формате fire-Forgot, что означает, что этот шаблон предполагает, что запросы будут в конечном итоге обработаны.

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

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

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

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

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

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

Бизнес-исключения

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

Исключения для некоммерческих организаций

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

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

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

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

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

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

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

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

пример

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

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

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

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

пример

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

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

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

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

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

  • Затем он проверяет содержимое сообщения и тип исключения.

  • И наконец, он направляет сообщение в соответствующую стратегию исключения.

Во-первых, он перехватывает все исключения, генерируемые в родительском потоке.

Затем он проверяет содержимое сообщения и тип исключения.

И наконец, он направляет сообщение в соответствующую стратегию исключения.

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

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

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

MuleSoft — Тестирование с помощью MUnit

Мы понимаем, что модульное тестирование — это метод, с помощью которого отдельные модули исходного кода можно тестировать, чтобы определить, подходят ли они для использования или нет. 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.

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

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

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

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

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

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

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

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

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

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

Последний выпуск Mule MUnit Testing Framework

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, и мы можем разрабатывать и тестировать наши приложения и API-интерфейсы Mule в графическом или XML-формате в студии Anypoint. Другими словами, мы можем использовать графический интерфейс Anypoint Studio для следующих действий:

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

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

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

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

Разработка тестов MUnit

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

  • Щелкнув правой кнопкой мыши по потоку — в этом методе нам нужно щелкнуть правой кнопкой мыши по определенному потоку и выбрать MUnit в раскрывающемся меню.

  • Использование мастера — в этом методе нам нужно использовать мастер для создания теста. Это позволяет нам создавать тест для любого потока в рабочей области.

Щелкнув правой кнопкой мыши по потоку — в этом методе нам нужно щелкнуть правой кнопкой мыши по определенному потоку и выбрать MUnit в раскрывающемся меню.

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

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

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

Тест MUnitFlow

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

Выберите MUnit

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

Выполнение потока

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

Редактор XML

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

Подтверждение утверждения

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

MUnit Test Suite

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

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

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

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

Шаг 1

Перейдите в Package Explorer и щелкните правой кнопкой мыши по XML-файлу для вашего комплекта или теста. Затем выберите Свойства .

Шаг 2

Теперь в окне «Свойства» нам нужно нажать « Выполнить / Отладка» . После этого нажмите New .

Шаг 3

На последнем шаге нажмите MUnit в окне « Выбрать тип конфигурации» и нажмите « ОК» .

Изменить конфигурацию запуска

Выполнение теста

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

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

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

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

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

Выполнение теста

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

Выполнение теста

Там после выхода видно в консоли.

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

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

Создать отчет

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

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

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

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

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

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

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

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

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

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

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

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