JBoss Fuse — Введение в ESB
В этой главе мы начнем с основ Enterprise Service Bus. Ниже приводится подробное объяснение ESB, а также его преимущества, недостатки и пара диаграмм для более легкого понимания.
Что такое ESB?
ESB расшифровывается как Enterprise Service Bus. ESB в своей простейшей форме является промежуточным программным обеспечением, которое действует как информационная магистраль, помогающая множеству приложений взаимодействовать.
В корпоративном мире мы разрабатываем решения для многих вещей. Эти решения могут использовать разные технологии и разные форматы данных. Использование этих решений становится затруднительным из-за различий в совместимости коммуникаций или формата данных в этих технологиях. Поэтому нам нужна технология, которая позволит слабо связанную интеграцию между этими различными решениями.
ESB стремится упростить эту проблему интеграции, став «концентратором», который находится в центре всех ваших приложений и облегчает маршрутизацию сообщений между ними. ESB выступает в качестве посредника, выступая в качестве информационной магистрали, заботясь о маршрутизации преобразования данных, оставляя Кодера или Разработчика сосредоточиться на собственной логике приложения.
Понимание ESB становится очень простым, когда мы понимаем проблему, для которой оно было специально разработано, и решение становится легким. Необходимо четко понимать, как включить множество разнородных систем, написанных на разных языках и работающих на разных компьютерах с использованием разных форматов данных для обмена информацией и формирования интегрированной бизнес-платформы.
Проблема интеграции
На корпоративной платформе несколько приложений, как правило, сотрудничают и предоставляют бизнес-функции в целом, но интеграция этих приложений является наиболее часто возникающей проблемой. Со временем это становится даже сложнее, так как приложения растут.
Каждое приложение может вводить и выводить данные в своем собственном формате. Этот подход хорошо работает, если число приложений меньше, но по мере роста числа приложений колеса интеграции также должны быть улучшены. Например, если необходимо изменить конкретное приложение для бизнеса, это повлияет на формат его выходных или входных данных для всех приложений, зависящих от этого главного приложения.
Такой подход является самым большим препятствием для интеграции, которая предполагает тесно связанную архитектуру. Это где ESB входит в картину. Каждое приложение не должно напрямую связываться с другим приложением; вместо этого все приложения взаимодействуют с ESB, а ESB управляет маршрутизацией информации и внутренним преобразованием формата данных.
Почему ESB?
Ниже приведены несколько моментов, объясняющих, почему Enterprise Service Bus имеет важное значение.
-
ESB стремится упростить проблему интеграции с различными совместимыми приложениями.
-
Он действует как промежуточное ПО, которое служит посредником для всех ваших приложений и облегчает маршрутизацию сообщений между ними.
-
Вместо того чтобы каждое приложение напрямую взаимодействовало с любым другим приложением, каждое приложение теперь имеет только один интерфейс с ESB.
-
ESB отвечает за перевод сообщений в / из общего формата и маршрутизацию их к месту назначения.
-
Основная экономия в этом подходе — благо, если вам нужно заменить какое-либо из ваших существующих приложений. Вместо того, чтобы писать целую кучу новых интерфейсов, теперь у вас есть только один интерфейс, который нужно учитывать (между вашим приложением и ESB).
ESB стремится упростить проблему интеграции с различными совместимыми приложениями.
Он действует как промежуточное ПО, которое служит посредником для всех ваших приложений и облегчает маршрутизацию сообщений между ними.
Вместо того чтобы каждое приложение напрямую взаимодействовало с любым другим приложением, каждое приложение теперь имеет только один интерфейс с ESB.
ESB отвечает за перевод сообщений в / из общего формата и маршрутизацию их к месту назначения.
Основная экономия в этом подходе — благо, если вам нужно заменить какое-либо из ваших существующих приложений. Вместо того, чтобы писать целую кучу новых интерфейсов, теперь у вас есть только один интерфейс, который нужно учитывать (между вашим приложением и ESB).
SOA & ESB?
SOA и ESB обычно используются взаимозаменяемо, но они совершенно разные.
SOA — это шаблон проектирования, который позволяет приложению представлять свои функциональные возможности как сервис по сети через протоколы связи, тогда как ESB — это модель, которая облегчает обмен данными между разнородными системами, но ESB может использоваться в качестве основы при реализации SOA.
Что такое предохранитель?
JBoss Fuse — это решение с открытым исходным кодом ESB от Redhat. Это корпоративное решение, основанное на проекте сообщества Apache Servicemix.
Интеграция в Предохранитель
JBoss Fuse — это легкая и гибкая платформа интеграции, которая позволяет быстро интегрировать корпоративные приложения.
Изначально Fuse был разработан компанией Progressive software Inc., которая была приобретена Redhat в 2012 году. JBoss Fuse 6.1.0.redhat-379 GA — это стабильная версия Fuse, которую можно загрузить с их официального сайта.
Архитектура
Предохранитель объединяет различные технологии в единый продукт.
Компоненты
Apache CXF
Apache CXF — это среда разработки веб-сервисов с открытым исходным кодом, которая также поддерживает разработку веб-сервисов SOAP & Rest.
Apache Camel
Apache Camel — это интегрированная среда на основе EIP. Шаблоны EIP или Enterprise Integration — это идентифицированные решения для повторяющихся проблем в Enterprise Integration. Полное интеграционное решение может быть достигнуто метеорологически с комбинациями этих предопределенных готовых шаблонов.
Он позволяет писать логику маршрутизации на нескольких предметно-ориентированных языках, таких как Java, Spring DSL, Scala и т. Д.
Apache AMQ
Apache AMQ — это JMS, которая обеспечивает надежную систему обмена сообщениями в соответствии со стандартами JMS. Он не только поддерживает спецификацию JMS, но также предоставляет некоторые интересные и полезные функции, которые не включены в спецификации JMS.
Апаче Караф
Apache Karaf — это легкий OSGi-контейнер, который служит средой выполнения для артефактов. Apache Karaf более динамичен по сравнению с JVM. Это позволяет устанавливать или удалять модули во время выполнения. Все артефакты в Предохранителе развернуты в Карафе.
ткань
Fabric предоставляет простой способ управления развертыванием артефактов в большой и распределенной среде. Он обеспечивает централизованное управление всеми несколькими предохранителями.
Установка предохранителя
Установка Предохранителя довольно проста. Как и другие продукты JBoss, Fuse поставляется в виде zip-файла, который можно извлечь, и после некоторых незначительных изменений конфигурации он может быть запущен напрямую.
Установка Предохранителя состоит из четырех этапов —
Скачать
Скачать Fuse 6.1.0 GA можно по следующей ссылке. http://www.jboss.org/
расстегнуть молнию
Как и все другие продукты JBoss, Fuse также не зависит от платформы.
Разархивируйте загруженный файл в каталог назначения, которым вы хотите стать в каталог установки Fuse. Выбирайте этот каталог с умом, так как он должен оставаться неизменным в течение всего времени существования экземпляра Fuse.
Примечание. Несмотря на то, что Fuse распаковывается и запускается, как и другие продукты JBoss, не рекомендуется перемещать установку Fuse из одного места в другое после ее завершения.
конфигурировать
После того, как вы распакуете Fuse, вы найдете следующие каталоги внутри извлеченного каталога:
- бункер
- так далее
- развертывание
- Lib
- лицензии
- дополнительные услуги
- quickstarts
Из которых мы собираемся использовать только две директории bin & etc.
Фактически после извлечения Fuse мы сможем запустить fuse напрямую, но это запустит Fuse со всеми конфигурациями по умолчанию, что не рекомендуется для производственной среды. Настоятельно рекомендуется сделать следующие изменения перед запуском предохранителя.
Установить переменные среды
-
Установите следующие переменные окружения — JAVA_HOME
-
Переменная должна указывать на каталог установки Java — M2_HOME
-
Переменная должна указывать на каталог установки Maven — PATH
-
Установите переменную пути, чтобы включить исполняемые файлы Java & Maven.
Установите следующие переменные окружения — JAVA_HOME
Переменная должна указывать на каталог установки Java — M2_HOME
Переменная должна указывать на каталог установки Maven — PATH
Установите переменную пути, чтобы включить исполняемые файлы Java & Maven.
Windows
В Windows настройки можно выполнить, следуя приведенным ниже инструкциям —
Пуск → Мой компьютер → Щелкните правой кнопкой мыши → Свойства → Дополнительные параметры системы → Переменные среды.
UNIX & Clones
Для каждого пользователя в операционных системах * nix есть профиль bash. Мы можем добавить или отредактировать существующую системную переменную, изменив этот файл.
$ vi ~ / .bash_proflle
Примечание. Любые изменения в этом файле являются постоянными. Настоятельно рекомендуется сделать резервную копию существующего файла перед изменением оригинала.
Базовая конфигурация
Мы обсудим базовую конфигурацию JBoss Fuse, и для этого нам нужно начать со следующей команды Edit $ FUSE_INSTALLATION_DIR / etc /
-
В user.properties
-
# Админ = администратор, администратор
-
Это должно быть изменено в соответствии с первым администратором с желаемым именем пользователя, вторым администратором с паролем, третьим может быть сохранен как есть, потому что он указывает на роль и не забудьте удалить #
-
Например — FuseAdmin = FusePAss, администратор
-
В user.properties
# Админ = администратор, администратор
Это должно быть изменено в соответствии с первым администратором с желаемым именем пользователя, вторым администратором с паролем, третьим может быть сохранен как есть, потому что он указывает на роль и не забудьте удалить #
Например — FuseAdmin = FusePAss, администратор
-
В System.properties
-
karafName = root
-
Это указывает на имя, которое вы хотите дать экземпляру Karaf.
-
Мы можем назвать его как угодно, как Cont1.
-
Убедитесь, что это имя является уникальным и не используется другим экземпляром Fuse.
-
-
-
В org.ops4j.pax.web.cfg
-
Org.osgi.service.http.port = 8181
-
Это свойство указывает порт, который должен использоваться для доступа к браузерному интерфейсу HAWTIO, предоставленному Fuse.
-
HAWTIO — это встроенный интерфейс браузера для Fuse, который доступен начиная с версии 6.0
-
-
В org.ops4j.pax.url.mvn.cfg
-
org.ops4j.pax.url.mvn.localRepository = D: / repository
-
Это свойство указывает путь к localRepository нашего Maven, откуда Fuse будет устанавливать его артефакты.
-
org.ops4j.pax.url.mvn.settings = D: /Maven/conf/settings.xml
-
Это свойство указывает settings.xml, который Fuse должен использовать для получения артефактов от Maven.
-
В System.properties
karafName = root
Это указывает на имя, которое вы хотите дать экземпляру Karaf.
Мы можем назвать его как угодно, как Cont1.
Убедитесь, что это имя является уникальным и не используется другим экземпляром Fuse.
В org.ops4j.pax.web.cfg
Org.osgi.service.http.port = 8181
Это свойство указывает порт, который должен использоваться для доступа к браузерному интерфейсу HAWTIO, предоставленному Fuse.
HAWTIO — это встроенный интерфейс браузера для Fuse, который доступен начиная с версии 6.0
В org.ops4j.pax.url.mvn.cfg
org.ops4j.pax.url.mvn.localRepository = D: / repository
Это свойство указывает путь к localRepository нашего Maven, откуда Fuse будет устанавливать его артефакты.
org.ops4j.pax.url.mvn.settings = D: /Maven/conf/settings.xml
Это свойство указывает settings.xml, который Fuse должен использовать для получения артефактов от Maven.
Настройка Maven
Maven является обязательным условием для установки Fuse. Если вы не знаете, что такое Maven, пожалуйста, обратитесь к http://www.tutorialspoint.com/maven/
Maven — это встроенный инструмент, используемый для создания артефактов Предохранителя. Fuse сначала ищет в локальном репозитории Maven артефакты, когда мы запускаем команду для установки артефакта. Поэтому мы должны сообщить Fuse, где установлен Maven и путь к локальному хранилищу Maven.
Отредактируйте $ FUSE_INSTALLATION_DIR / etc / org.ops4j.paxurl.mvn.cfg
Обновите следующие два свойства —
- org.ops4j.pax.url.mvn.settings = $ M2_HOME / conf /settings.xml
- org.ops4j.pax.url.mvn.localRepository = $ local_repo
Примечание. Пожалуйста, измените $ local_repo, указав фактический путь к локальному репозиторию, указанный в файле Mavens settings.xml.
Бежать
После внесения основных изменений в конфигурацию мы можем запустить Fuse. Все двоичные файлы для работы с Fuse находятся в $ FUSE_INSTALLATION_DIR .
Есть два способа запустить Fuse —
-
Использование ./fuse
-
Это позволит вам увидеть весь прогресс и логи в том же окне, в котором вы запустили Fuse.
-
Это даст вам консоль Karaf в том же терминале, как показано ниже.
-
Использование ./fuse
Это позволит вам увидеть весь прогресс и логи в том же окне, в котором вы запустили Fuse.
Это даст вам консоль Karaf в том же терминале, как показано ниже.
Примечание. Это запустит предохранитель в режиме консоли, что означает, что процесс предохранителя также будет остановлен, когда пользователь выйдет из сеанса или закроет терминал, что нежелательно в сценарии производства или разработки. Этот скрипт следует использовать только для отладки Fuse.
-
Использование ./start
-
Это не будет отображать никаких журналов на экране, даже прогресс, но это запустит Fuse в фоновом режиме, и служба Fuse не будет остановлена, когда пользователь выйдет из сеанса или закроет терминал.
-
В реальных приложениях, этот тип поведения является желательным. Предохранитель должен работать в фоновом режиме, даже если мы закроем терминал.
-
Если вы хотите подключиться к Fuse, работающему в фоновом режиме, вы можете использовать клиентский скрипт, который находится в той же папке.
-
Вы должны получить дисплей, как показано на следующем скриншоте.
-
Выход из клиентского скрипта не остановит службу Fuse. Это просто закроет консоль предохранителя.
-
Использование ./start
Это не будет отображать никаких журналов на экране, даже прогресс, но это запустит Fuse в фоновом режиме, и служба Fuse не будет остановлена, когда пользователь выйдет из сеанса или закроет терминал.
В реальных приложениях, этот тип поведения является желательным. Предохранитель должен работать в фоновом режиме, даже если мы закроем терминал.
Если вы хотите подключиться к Fuse, работающему в фоновом режиме, вы можете использовать клиентский скрипт, который находится в той же папке.
Вы должны получить дисплей, как показано на следующем скриншоте.
Выход из клиентского скрипта не остановит службу Fuse. Это просто закроет консоль предохранителя.
HAWTIO
Fuse также обеспечивает полный доступ к GUI через FMC (консоль управления Fuse). Вы можете найти GUI по нижеуказанному URL http: // localhost: 8181 .
Все, что мы делали, выполняя команды, также можно сделать с помощью этого графического интерфейса на основе браузера. Это становится чрезвычайно полезным, когда у нас более одного контейнера и мы работаем в среде Fabric.
JBoss Fuse — Apache Karaf
В этой главе мы обсудим Apache Karaf и почему он называется облегченным OSGi-контейнером, а также его преимуществами и другими важными функциями.
Проблема с JVM
Виртуальная машина JVM или Java не действует как фактическая виртуальная машина. Машина, которая позволит вам на лету останавливать, запускать или перезапускать компоненты, работающие внутри. Иногда может быть разрешено горячее развертывание на уровне класса, но вы не сможете развернуть или отменить развертывание компонента своего приложения на виртуальной машине без перезапуска.
Чтобы решить эту проблему и разрешить модульность в Java-приложении, Fuse использует среду исполнения на основе OSGi, известную как Apache Karaf.
OSGi
Технология OSGi — это набор спецификаций, которые определяют систему динамических компонентов для Java. Эти спецификации позволяют разработать модель, в которой приложения (динамически) состоят из множества различных (повторно используемых) компонентов.
Преимущества ОСГи
-
Уменьшенная сложность. Приложение построено как взаимодействующие компоненты, которые скрывают детали реализации друг от друга, что приводит к снижению сложности.
-
Возможность повторного использования — многие компоненты могут использовать один и тот же компонент, развернутый в контейнере.
-
Развертывание — OSGi обеспечивает поддержку запуска, остановки и обновления компонентов на лету с помощью API-интерфейсов управления жизненным циклом без перезапуска контейнера.
Уменьшенная сложность. Приложение построено как взаимодействующие компоненты, которые скрывают детали реализации друг от друга, что приводит к снижению сложности.
Возможность повторного использования — многие компоненты могут использовать один и тот же компонент, развернутый в контейнере.
Развертывание — OSGi обеспечивает поддержку запуска, остановки и обновления компонентов на лету с помощью API-интерфейсов управления жизненным циклом без перезапуска контейнера.
Пакеты Vs Особенности
Ниже приведено сравнение комплектов и функций.
Связки
Пакеты эквивалентны OSGi, что jars для JVM. Пакеты — это артефакты, которые можно развернуть в контейнере OSGi. Пакеты — это компоненты, которые работают вместе или независимо друг от друга, образуя приложение.
Эти пакеты могут быть установлены, удалены, обновлены, запущены или остановлены во время выполнения без перезапуска контейнера.
Характеристики
Функции — это способ развертывания нескольких пакетов вместе. Иногда имеет смысл размещать пакеты в группе. Функции позволяют нам развернуть группу пакетов с помощью только одной команды.
Почему еще один контейнер?
Apache Karaf — это среда исполнения на основе OSGi, где работают наши пакеты приложений. Fuse использует Apache Karaf в качестве среды выполнения, в которой пакеты работают и работают совместно для обеспечения бизнес-функциональности.
Караф построен на Феликсе и равноденствии, которые являются OSGi Frameworks.
Караф Архитектура
Apache Karaf добавляет следующие дополнительные функциональные возможности к базовой среде выполнения OSGi.
Горячее развертывание
Караф поддерживает горячее развертывание. Он содержит каталог горячего развертывания. Все, что находится в этом каталоге, автоматически развертывается и устанавливается в Karaf в виде пакета.
логирование
Karaf обеспечивает централизованное ведение журналов, генерируя журналы для всех пакетов в $ Fuse_home / data / log . Мы можем отредактировать конфигурацию логгера в org.ops4j.pax.logging.cfg в каталоге $ Fuse_home / etc.
Консоль администратора
Karaf предоставляет изощренную и понятную консоль администратора для взаимодействия с запущенным экземпляром fuse. Он также предоставляет предварительно установленный набор команд, которые можно использовать для управления и мониторинга компонентов (Bundle) во время выполнения. Эта консоль является расширяемой, поэтому она позволяет добавлять новые команды в консоль, добавляя новые пакеты в консоль.
SSH доступ
Караф позволяет удаленный доступ к этой консоли администратора с помощью SSH. Любой человек с действительными учетными данными может подключиться к консоли администратора karaf через терминал SSH.
JBoss Fuse — Apache Camel
В этой главе мы обсудим, что такое Apache Camel и как он эффективно маршрутизирует данные между конечными точками, а также несколько примеров.
Что такое Apache Camel?
Apache Camel — это интегрированная среда с открытым исходным кодом, которая была запущена в начале 2007 года.
Это подход на основе EIP (Enterprise Integration Pattern), который предоставляет несколько готовых реализаций шаблонов, которые можно использовать для решения проблем интеграции предприятия. EIP — это не что иное, как проверенные решения хорошо документированных и повторяющихся проблем корпоративной интеграции.
Camel также известен как механизм маршрутизации и посредничества, поскольку он эффективно маршрутизирует данные между конечными точками, принимая на себя большую нагрузку, такую как преобразование форматов данных, подключение конечных точек и многое другое.
Основной пример
Предварительные условия для использования Apache Camel:
- Джава
- специалист
- Redhat JBoss Fuse 6.1-GA-379
Создать базовый скелет приложения
mvn:archetype generate –DgroupId = com.tutorialpoint.app –DartifactId = camel-first-app –DarchetypeGroupId = org.apache.camel.archetypes –DarchetypeArtifactId = camel-archetype-spring –DinteractiveMode = false -X
Это должно создать следующую структуру каталогов.
Это базовый каркас создаваемого приложения Camel.
Отредактируйте camel-context.xml
Отредактируйте приложение camel-first-app → src → main → resources → META-INF \ spring \ camel-context .xml, чтобы оно соответствовало приведенному ниже.
<?xml version = "1.0" encoding = "UTF-8"?> <!-- Configures the Camel Context--> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <camelContext xmlns = "http://camel.apache.org/schema/spring"> <!-- here is a sample which processes the input file (leaving them in place - see the 'noop' flag) then performs content based routing on the message using XPath --> <route> <from uri = "file:///d:/src/data?noop=false"/> <choice> <when> <xpath>/person/city = 'London'</xpath> <log message = "UK message"/> <to uri = "file:///d:/target/messages/uk"/> </when> <otherwise> <log message = "Other message"/> <to uri = "file:///d:/target/messages/others"/> </otherwise> </choice> </route> </camelContext> </beans>
Редактировать pom.xml
Добавьте следующий код внутри <plugins> </ plugins>
<plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>2.3.4</version> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName> ${project.artifactId} </Bundle-SymbolicName> <Import-Package>*</Import-Package> </instructions> </configuration> </plugin>
Измените тип упаковки с jar → bundle .
<packaging>bundle</packaging>
Создайте проект с помощью следующей команды —
mvn clean install
Установить проект в предохранитель
Запустите Fuse с помощью Fuse.bat / start.bat . Если вы запускаете Fuse с помощью start.bat , используйте client.bat для подключения к Fuse. Вы должны получить пользовательский интерфейс, как показано на следующем скриншоте.
Это CLI для доступа к командам Karaf и Fuse.
install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT
Проверьте, работает ли ваш проект
Теперь ваше приложение должно быть установлено в Fuse. Скопируйте каталог данных в camel-first-app и поместите его в D: / src /, и он должен скопировать сообщение с названием city = London в D: / target / merssages / uk .
Поместите входной файл в D: / src / data
вход
Message1.xml
<?xml version = "1.0" encoding = "UTF-8"?> <person user = "james"> <firstName>James</firstName> <lastName>Strachan</lastName> <city>London</city> </person>
Message2.xml
<?xml version = "1.0" encoding = "UTF-8"?> <person user = "hiram"> <firstName>Hiram</firstName> <lastName>Chirino</lastName> <city>Tampa</city> </person>
Выход
В D: / target / messages / uk
<?xml version = "1.0" encoding = "UTF-8"?> <person user = "james"> <firstName>James</firstName> <lastName>Strachan</lastName> <city>London</city> </person>
В D: / target / messages / others
<?xml version = "1.0" encoding = "UTF-8"?> <person user = "hiram"> <firstName>Hiram</firstName> <lastName>Chirino</lastName> <city>Tampa</city> </person>
Предохранитель JBoss — верблюжий концепт
В этой главе мы поймем различные концепции верблюдов. Давайте начнем с базового примера, чтобы понять основные концепции для начала.
CamelContext
Каждое приложение верблюда будет иметь по крайней мере один CamelContext. Это место, где мы добавляем верблюжьи маршруты. Это похоже на ApplicationContext из Spring.
Верблюжий контекст можно рассматривать как контейнер, который объединяет все вещи. В одном контексте верблюда может быть несколько маршрутов.
Маршруты
CamelContext может содержать один или несколько маршрутов. Маршруты — это логика интеграции, которая определяет, как данные будут передаваться в верблюжьем контексте от одной конечной точки к другой.
Конечная точка
Конечная точка — это конец канала, через который система может отправлять или получать сообщения. Это то, что мы называем местом назначения или источником на языке общения.
Компоненты
Компоненты являются точкой расширения в Camel. Компоненты могут быть интерфейсом для технологии, формата данных, преобразователей и т. Д. Они также могут действовать как фабрика для конечных точек.
EIP
EIP расшифровывается как Enterprise Integration Pattern. Это идентифицированные и общеизвестные решения повторяющейся проблемы. Camel поддерживает большинство корпоративных шаблонов интеграции.
Контент-маршрутизатор
Шаблоны CBR позволяют нам направлять данные в соответствии с содержимым входного файла.
Этот шаблон используется, когда нам нужно направить значения в зависимости от содержимого тела ввода.
В следующем примере будут считаны данные из каталога D: / data / input . После прочтения он проверит тег значения внутри тега данных. Если тег значения содержит значение1 , он будет отправлен в D: / значение1. Если он содержит значение 2 , он будет отправлен в D: / значение2, и если ни один из них обоих, то он будет отправлен другим.
<CamelContext xmlns = "http://camel.apache.org/schema/spring"> <route> <from uri = "file:///D:/data/input"/> <choice> <when> <xpath>/data/value = 'value1'</xpath> <to uri = "file:///D:/value1"/> </when> <when> <xpath>/data/value = 'value2'</xpath> <to uri = "file:///D:/value2"/> </when> <otherwise> <to uri = "file:///D:/others "/> </otherwise> </choice> </route> </camelContext>
вход
D: /data/input/message1.xml
<data> <value>value1</value> </data>
D: /data/input/message2.xml
<data> <value>value2</value> </data>
Выход
D: / значение1 /
<data> <value>value1</value> </data>
D: / значение2 /
<data> <value>value2</value> </data>
Разветвитель
Шаблон разделения используется для разделения входных данных на более мелкие куски.
Этот шаблон используется в большинстве случаев с огромным вводом данных, который необходимо разбить на куски, чтобы он стал пригодным для обработки. Он разбивает входные данные на более мелкие фрагменты на основе строки входного токена.
<CamelContext xmlns = "http://camel.apache.org/schema/spring"> <route> <from uri = "file:///D:/inbox"/> <split streaming = "true"> <tokenize token = "order" xml = "true"/> <to uri = "activemq:queue:order"/> </split> </route> </CamelContext>
вход
D: /inbox/message.xml
<order> <data> <value>value1</value> </data> </order> <order> <data> <value>value2</value> </data> </order> <order> <data> <value>value3</value> </data> </order>
Выход
Если вы проверите AMQ, вы найдете 3 сообщения.
<order> <data> <value>value4</value> </data> </order>
Список получателей
Шаблон списка получателей используется, когда необходимо получить список получателей из самого тела сообщения.
В следующем примере сообщение будет отправлено всем получателям, которые указаны в теге customer как список строк через запятую.
<CamelContext xmlns = "http://camel.apache.org/schema/spring"> <route> <from uri = "jms:xmlOrders" /> <recipientList> <xpath>/order/customer</xpath> </recipientList> </route> </camelContext>
Другие EIP
Верблюд оказывает поддержку почти всем выявленным EIP. Некоторые из наиболее часто используемых EIP, как указано ниже.
-
Журнал — для регистрации полного сообщения или его части
-
Фильтр сообщений — фильтрация содержимого сообщений
-
Re-Sequencer — чтобы получить все токены в последовательности
-
Прослушка — для проверки путешествующих сообщений
Журнал — для регистрации полного сообщения или его части
Фильтр сообщений — фильтрация содержимого сообщений
Re-Sequencer — чтобы получить все токены в последовательности
Прослушка — для проверки путешествующих сообщений
Полный список EIP и их использование можно найти в официальной документации Camel http://camel.apache.org/eip.html.
Обработка исключений в Camel
Использование обработчика ошибок — это самый простой способ обработки исключений в Camel.
Чтобы использовать это, мы должны сконфигурировать bean-компонент класса обработчика ошибок и предоставить его в качестве ссылки на атрибут errorHandlerRef CamelContext .
<bean id = "loggingErrorHandler" class = "org.apache.camel.builder.LoggingErrorHandler"> <property name = "logName" value = "mylogger.name"/> <property name = "level" value = "DEBUG"/> </bean> <camelContext errorHandlerRef = ” loggingErrorHandler” > … </camelContext>
Использование Try Catch наконец
Camel также поддерживает стиль Java Try Catch finally для обработки ошибок.
Как и в Java, он имеет следующие три блока:
-
Блок doTry содержит код, который может генерировать исключение.
-
Блок doCatch содержит код, который необходимо выполнить в случае исключения.
-
Блок doFinally содержит код, который должен выполняться независимо от исключения. Он всегда будет выполняться независимо от того, было ли вызвано исключение или нет.
Блок doTry содержит код, который может генерировать исключение.
Блок doCatch содержит код, который необходимо выполнить в случае исключения.
Блок doFinally содержит код, который должен выполняться независимо от исключения. Он всегда будет выполняться независимо от того, было ли вызвано исключение или нет.
Примечание. Макет является компонентом тестирования и не рекомендуется для других целей. Это компонент верблюда, используемый для тестирования, так же как и компонент jMOck в разработке, управляемой тестами.
<route> <from uri = "direct:start"/> <doTry> <process ref = "someProcesorThatmayFail"/> <to uri = "mock:result"/> <doCatch> <exception>java.io.IOException</exception> <exception>java.lang.IllegalStateException</exception> <to uri = "mock:catch"/> </doCatch> <doFinally> <to uri = "mock:finally"/> </doFinally> </doTry> </route>
В приведенном выше примере мы можем дать список исключений, которые должны быть обработаны блоком catch.
Развертывание пакета в Fuse
Запустите Fuse с помощью Fuse.bat / start.bat .
Если вы запускаете Fuse с помощью start.bat, используйте client.bat для подключения к Fuse. Вы должны получить пользовательский интерфейс, как показано на следующем скриншоте.
Это CLI для доступа к командам Karaf и Fuse.
install –s mvn:group.id /artifact.id/version e.g. install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT
JBoss Fuse — Apache CXF
В этой главе давайте обсудим, что такое Apache CXF и как он может быть полезен при разработке SOAP и остальных веб-служб.
Что такое Apache CXF?
Apache CXF — это среда разработки веб-сервисов, которую можно использовать для разработки веб-сервисов SOAP и Rest. CXF полностью соответствует стандартам JAX-RS и JAX-Ws .
В настоящее время это наиболее широко используемая среда разработки веб-сервисов. CXF изучил и улучшил по сравнению с Axis2, который теперь постепенно заменяется CXF.
CXF против Axis2
CXF | Axis2 | |
---|---|---|
улучшения |
На данный момент CXF является наиболее используемой платформой. Он имеет много улучшений по сравнению с Axis2 |
Axis2 постепенно заменяется CXf. Требуется больше кода по сравнению с CXF |
Код требуется |
CXF требует меньше кода по сравнению с Axis2 |
Axis2 требует больше кода для сравнения |
Стандартное соответствие |
CSF полностью совместим с JAX-RS и JAX-WS |
Axis2 не полностью совместим с JAX-RS и JAX-WS |
Совместим с пружиной |
да |
нет |
Разделение фронт-эндов |
Чистое отделение внешнего интерфейса от кода JAX-WS |
Чистое разделение не предусмотрено |
На данный момент CXF является наиболее используемой платформой.
Он имеет много улучшений по сравнению с Axis2
Axis2 постепенно заменяется CXf.
Требуется больше кода по сравнению с CXF
CXF требует меньше кода по сравнению с Axis2
Axis2 требует больше кода для сравнения
CSF полностью совместим с JAX-RS и JAX-WS
Axis2 не полностью совместим с JAX-RS и JAX-WS
да
нет
Чистое отделение внешнего интерфейса от кода JAX-WS
Чистое разделение не предусмотрено
МЫЛО
SOAP означает простой протокол доступа к объектам. Это протокол для обмена структурированной информацией через веб-сервисы между двумя системами. Он в основном использует XML для структурирования данных и использует HTTP или SMTP для согласования и передачи сообщений.
Существует два подхода к разработке веб-сервисов SOAP:
-
Сначала код — в этом подходе WSDL генерируется из кода.
-
Сначала контракт — в контракте сначала код генерируется из WSDL.
Сначала код — в этом подходе WSDL генерируется из кода.
Сначала контракт — в контракте сначала код генерируется из WSDL.
Разработка SOAP с использованием CXF
Настроить Maven
Добавьте следующий профиль в файл settings.xml Maven.
<profiles> <profile> <id>Jboss-Fuse</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>fusesource</id> <url>http://repo.fusesource.com/nexus/content/groups/public/</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> </profile> </profiles>
Создать скелет
mvn archetype:generate -DarchetypeGroupId = org.apache.servicemix.tooling -DarchetypeArtifactId = servicemix-cxf-code-first-osgi-bundle -DarchetypeVersion=2012.01.0.redhat-60024 -DgroupId = org.fusesource.example -DartifactId = cxf-basic -Dversion = 1.0-SNAPSHOT
Построить веб-сервис проекта .
mvn clean install
Установите веб-сервис в Fuse, используя следующую команду .
JBossFuse:karaf@root>install -s mvn:org.fusesource.example/cxf-basic/1.0-SNAPSH
Проверьте, есть ли в комплекте зарегистрированный веб-сервис SOQP
Открыть URL http: // localhost: 8181 / cxf
Веб-сервис должен быть указан следующим образом.
Тестирование веб-сервиса
mvn -Pclient
ИНФОРМАЦИЯ — Создание службы { http://ws.totorials.com/ } PersonService из класса com.to
torials.ws.Person Invoking getPerson... getPerson._getPerson_personId = Guillaume getPerson._getPerson_ssn = 000-000-0000 getPerson._getPerson_name = Guillaume [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 30.668 s [INFO] Finished at: 2016-02-15T21:01:20+05:30 [INFO] Final Memory: 10M/37M [INFO] ------------------------------------------------------------------------
JBoss Fuse — остальные веб-сервисы
Начнем с того, что REST расшифровывается как Передача представительского состояния. Это способ разработки веб-сервисов на основе кэшируемого протокола клиент-сервер без учета состояния, который в большинстве случаев является HTTP.
Веб-сервисы REST используют HTTP-запросы для публикации, получения, удаления данных из сети.
Разработка REST с использованием CXF
Создать простой проект быстрого запуска Maven
mvn archetype:generate -DgroupId = com.tuts.abhinav -DartifactId = rest-service -DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false
Добавить зависимости
<dependency> <groupId>org.apache.servicemix.specs</groupId> <artifactId>org.apache.servicemix.specs.jsr311-api-1.1.1</artifactId> <version>1.9.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.servicemix</groupId> <artifactId>servicemix-http</artifactId> <version>2013.01</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency>
Добавить инструкцию по сборке
<build> <defaultGoal>install</defaultGoal> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifalctId>maven-bundle-plugin</artifactId> <version>2.3.4</version> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>rest-example-database-post-method </Bundle-SymbolicName> <Import-Package>* </Import-Package> </instructions> </configuration> </plugin> </plugins> </build>
Добавить репозиторий Fuse Plugin
<PluginRepositories> <PluginRepository> <Идентификатор> fusesource.m2 </ ID> <name> Репозиторий релизов сообщества FuseSource </ name> <Url> http://repo.fusesource.com/nexus/content/repositories/releases </ url> <Моментальные снимки> <Включена> False </ включен> </ Моментальные снимки> <релизы> <Включена> True </ включено> </ Релизы> </ PluginRepository> <PluginRepositories>
Добавить репозитории
<repositories> <repository> <id>fusesource.m2</id> <name>FuseSource Community Release Repository</name> <url>http://repo.fusesource.com/nexus/content/repositories/releases</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> <repository> <id>fusesource.ea</id> <name>FuseSource Community Early Access Release Repository</name> <url>http://repo.fusesource.com/nexus/content/groups/ea</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories>
Создать класс обслуживания
Создайте класс UserService.java под com / tuts /
package com.tuts; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/UserService_1") public class UserService { @GET @Path("/get_data") @Produces(MediaType.APPLICATION_JSON) public String getUser() { String reponse = "This is standard response from REST"; return reponse; } }
Создать Blueprint.xml
Создайте blueprint.xml в / src / main / resources / OSGI-INF / blueprint blueprint.xml
<?xml version = "1.0" encoding = "UTF-8"?> <blueprint xmlns = "http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs = "http://cxf.apache.org/blueprint/jaxrs" xsi:schemaLocation = "http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd"> <jaxrs:server id = "service" address = "/users"> <jaxrs:serviceBeans> <ref component-id = "userService" /> </jaxrs:serviceBeans> </jaxrs:server> <bean id = "userService" class = "com.tuts.UserService" /> </blueprint>
Установите сервис Rest в Fuse
install -s mvn:com.tuts.abhinav/rest-service/1.0-SNAPSHOT
Проверьте, есть ли в Bundle зарегистрированный веб-сервис
Открыть URL http: // localhost: 8181 / cxf
Тестовый веб-сервис
Открыть URL-адрес http: // localhost: 8181 / cxf / users12 / UserService_1 / get_data
JBoss Fuse — Apache AMQ
В этой главе мы узнаем об ActiveMQ и о том, как он действует как посредник сообщений, позволяя приложениям взаимодействовать друг с другом.
Что такое AMQ?
ActiveMQ — это брокер сообщений с открытым исходным кодом, написанный на Java. Он полностью соответствует стандартам JMS 1.1.
JMS — это спецификация, которая позволяет разрабатывать систему, основанную на сообщениях. ActiveMQ действует как посредник сообщений, который находится между приложениями и позволяет им общаться асинхронно и надежно.
Типы сообщений
Для лучшего понимания ниже приведены два типа сообщений.
Точка-точка
При таком типе связи брокер отправляет сообщения только одному потребителю, в то время как другие потребители будут ждать получения сообщений от брокера. Ни один потребитель не получит такое же сообщение.
Если нет потребителей, Брокер будет хранить сообщения, пока не получит потребителя. Этот тип связи также называется связью на основе очереди, когда источник отправляет сообщения в очередь, и только один потребитель получает одно сообщение из очереди. Если имеется более одного потребителя, они могут получить следующее сообщение, но они не получат того же сообщения, что и другой потребитель.
Публикация / подписка
При таком типе связи Брокер отправляет одну и ту же копию сообщений всем активным потребителям. Этот тип связи также известен как тематическая связь, где брокер отправляет одно и то же сообщение всем активным потребителям, которые подписались на конкретную тему. Эта модель поддерживает одностороннюю связь, при которой не требуется проверка переданных сообщений.
Создание очереди и тем
Предохранитель поставляется в комплекте с ActiveMQ. Мы можем получить доступ к ActiveMQ с помощью консоли FMC (интерфейс на основе браузера для работы с AMQ).
Войдите в FMC с помощью localhost: 8181 и выберите вкладку ActiveMQ .
- Нажмите на + Создать
- Введите очередь / название темы
- Выберите очередь / тему из переключателя
- Нажмите на Создать очередь / Создать тему
Теперь вы сможете увидеть TestQ, созданный под root → Queue →
Чтобы проверить созданную тему, следуйте root → Topic.
Просмотр / удаление содержимого очереди
-
Войдите в FMC используя localhost: 8181
-
Выберите вкладку ActiveMQ
-
Root → Queue → TestQ <выберите очередь, которую вы хотите просмотреть> → Обзор
Войдите в FMC используя localhost: 8181
Выберите вкладку ActiveMQ
Root → Queue → TestQ <выберите очередь, которую вы хотите просмотреть> → Обзор
- Чтобы проверить содержание этого сообщения, нажмите на это сообщение.
-
Вы можете удалить конкретное сообщение, нажав на кнопку Удалить, показанную в правом верхнем углу.
Вы можете удалить конкретное сообщение, нажав на кнопку Удалить, показанную в правом верхнем углу.
Предохранитель JBoss — AMQ с верблюдом
В этой главе мы изучим основы того, как ActiveMQ работает с Camel.
Настройка для компонента ActiveMQ
Прежде чем мы сможем использовать ActiveMQ-очередь или тему в нашем коде, мы должны настроить ActiveMQComponent. Минимальная конфигурация ActiveMQComponent может быть выполнена, как показано в следующей программе —
<bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent"> <property name = "brokerURL" value = "tcp://localhost:61616"/> <property name = "userName" value = "admin"/> <property name = "password" value = "admin"/> </bean>
-
brokerURL — указывает хост и порт для AMQ Broker.
-
username — указывает имя пользователя для подключения к AMQ Broker.
-
пароль — указывает пароль для подключения к AMQ Broker.
brokerURL — указывает хост и порт для AMQ Broker.
username — указывает имя пользователя для подключения к AMQ Broker.
пароль — указывает пароль для подключения к AMQ Broker.
Подключение к очереди
Теперь, когда мы настроили ActiveMQComponent, мы можем использовать его в нашем CamelContext в качестве конечной точки.
Мы будем использовать конечную точку AMQ в следующем формате —
Activemq:[queue|topic]:[queueName|topicName]
Написание сообщений в AMQ
<?xml version = "1.0" encoding="UTF-8"?> <!-- Configures the Camel Context--> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
После развертывания этого пакета в контейнере Fuse вы сможете увидеть сообщения, опубликованные в AMQ, которые были размещены в виде файлов в D: / src / data .
вход
D: /src/data/input.txt
Test me
Выход
Чтение из AMQ
<?xml version = "1.0" encoding = "UTF-8"?> <!-- Configures the Camel Context--> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <camelContext xmlns = "http://camel.apache.org/schema/spring"> <!-- here is a sample which processes the input files (leaving them in place - see the 'noop' flag) then performs content based routing on the message using XPath --> <route> <from uri = "activemq:queue:TestQ"/> <to uri = "file:///d:/src"/> </route> </camelContext> <bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent"> <property name = "brokerURL" value = "tcp://localhost:61616"/> <property name = "userName" value = "admin"/> <property name = "password" value = "admin"/> </bean> </beans>
вход
После развертывания этого пакета вы должны увидеть файл, сгенерированный в D: / src, и сообщения будут использованы. Также Потребитель должен быть показан для этой очереди.
Выход
D: / SRC
Test me
Запись в тему
<?xml version = "1.0" encoding = "UTF-8"?> <!-- Configures the Camel Context--> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <camelContext xmlns = "http://camel.apache.org/schema/spring"> <!-- here is a sample which processes the input files (leaving them in place - see the 'noop' flag) then performs content based routing on the message using XPath --> <route> <from uri = "file:///d:/src"/> <to uri = "activemq:topic:TestTopic” /> </route> </camelContext> <bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent"> <property name = "brokerURL" value = "tcp://localhost:61616"/> <property name = "userName" value = "admin"/> <property name = "password" value = "admin"/> </bean> </beans>
Чтение из темы
<?xml version = "1.0" encoding = "UTF-8"?> <!-- Configures the Camel Context--> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <camelContext xmlns = "http://camel.apache.org/schema/spring"> <!-- here is a sample which processes the input files (leaving them in place - see the 'noop' flag) then performs content based routing on the message using XPath --> <route> <from uri = "activemq:topic:TestTopic"/> <to uri = "file:///d:/src2"/> </route> </camelContext> <bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent"> <property name = "brokerURL" value="tcp://localhost:61616"/> <property name = "userName" value = "admin"/> <property name = "password" value = "admin"/> </bean> </beans>
вход
D: /src/file1.xml
<order> <data> <value>value1</value> </data> </order> <order> <data> <value>value2</value> </data> </order> <order> <data> <value>value3</value> </data> </order>
Выход
D: / SRC /
<order> <data> <value>value1</value> </data> </order> <order> <data> <value>value2</value> </data> </order> <order> <data> <value>value3</value> </data> </order>
JBoss Fuse — Ткань
Что такое ткань?
Fabric предоставляет возможности управления и оркестровки для нескольких экземпляров Fuse. Fabric позволяет нам контролировать все подключенные к нему экземпляры Fuse из одной точки. Обычный контейнер с предохранителями может быть преобразован в ткань. В Fabric есть реестр ткани, который служит хранилищем данных, которое содержит всю информацию о контейнерах, которыми он управляет.
Почему ткань?
Fabric обладает следующими специальными возможностями, что делает его идеальным кандидатом для использования в распределенных средах.
- Контроль состояния всех контейнеров в ткани.
- Запуск и остановка удаленных контейнеров.
- Предоставляет удаленный контейнер для запуска определенного приложения.
- Обновление приложений и развертывание исправлений в работающей системе.
- Быстрый запуск и подготовка новых контейнеров, например, чтобы справиться с повышенной нагрузкой на систему.
Настройка ткани
Создание Ткани
Обычный контейнер с предохранителями можно преобразовать в Fabric с помощью следующей команды
fabric: create --clean --zookeeper-password myZooPass
Подключение другого контейнера к Fabric —
fabric:join --zookeeper-password myZooPass <fabric_host>:2181 Cont1
Примечание. Пожалуйста, замените <fabric_host> фактическим именем хоста, на котором работает матрица.
Когда вы входите в консоль управления Fuse из браузера через localhost: 8181 , вы должны увидеть два контейнера, как показано на следующем снимке экрана. Контейнер Fabric обозначается небольшим облачным символом перед ним.
профили
Профиль содержит следующую информацию —
- Пакеты для установки
- Возможности для установки
- Конфигурации, которые будут применены
Профиль обеспечивает в матричной среде способ установки одинакового набора пакетов, функций и конфигурации на нескольких серверах.
Если один и тот же профиль применяется к нескольким контейнерам, и мы вносим изменения в этот профиль из любого контейнера, аналогичные изменения будут автоматически развернуты в остальных контейнерах, к которым он применяется.
Создание профилей
-
Войти в FMC localhost: 8181
-
Время выполнения → Управление
-
В левой части под меню «Профиль» нажмите +
Войти в FMC localhost: 8181
Время выполнения → Управление
В левой части под меню «Профиль» нажмите +
Введите имя, которое вы хотите присвоить профилю, и нажмите «Создать».
После этого профиль должен быть создан.
Применение профиля к контейнеру
Runtime → Containers → root (выберите нужный контейнер)
Нажмите кнопку Добавить, что приведет к появлению всплывающего окна. Найдите нужный профиль и затем снова нажмите « Добавить» .
Профиль должен быть показан в списке, как показано на следующем снимке экрана.
Развертывание пакета
Чтобы развернуть пакет, используйте следующий путь —
Время выполнения → Контейнеры → root (выберите нужный контейнер) → First_profile (выберите профиль)
Перейдите на вкладку «Связки». Задайте путь к пакету в следующем формате и нажмите « +» .
МВН: group.id/artifact.id/version
Например: mvn: com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT
Пакет будет добавлен в профиль и будет развернут во всех контейнерах, которым назначен профиль.
Развертывание пакета
Чтобы отменить развертывание пакета, используйте следующий путь —
Время выполнения → Контейнеры → root (выберите нужный контейнер) → First_profile (выберите профиль)
Перейдите на вкладку Bundles и найдите пакет, который вы хотите удалить, а затем нажмите X. Пакет будет удален из всех контейнеров, к которым применяется профиль.
JBoss Fuse — Детский Контейнер
Дочерний контейнер обеспечивает самый простой способ управлять возрастающей нагрузкой. Когда система испытывает внезапную нагрузку в трафике и один контейнер не может справиться с нагрузкой, мы можем легко создать набор дочерних контейнеров и распределить нагрузку между ними, а не создавать полностью новый контейнер.
Создание дочернего контейнера
Войдите в FMC используя localhost: 8181
Теперь следуйте по пути: Runtime → container → + Create (кнопка справа)
Введите такие данные, как имя ребенка, родительский контейнер, число экземпляров и т. Д.
Нажмите Создать и запустить контейнер
Управление дочерним контейнером
Дочерний контейнер действует только как обычный контейнер.
Остановка детского контейнера
Чтобы остановить дочерний контейнер, следуйте по пути: Runtime → Container → Child1
Нажмите Стоп, чтобы остановить дочерний контейнер.
Запуск дочернего контейнера
Чтобы запустить дочерний контейнер, следуйте по пути: Runtime → Container → Child1
Нажмите Пуск, чтобы запустить дочерний контейнер.
JBoss Fuse — Проблемы и решения
В этой главе мы обсудим несколько известных проблем, с которыми вы можете столкнуться при работе с Fuse. Мы также обсудим, как вы можете решить эти проблемы.
Изменения кода не отражаются
Подключитесь к экземпляру Fuse с помощью клиентского скрипта. Найдите пакет, для которого вы столкнулись с проблемой, с помощью следующей команды.
JBossFuse:karaf@root > list|grep <Bundle Description> For Example: JBossFuse:karaf@root > list|grep Camel [ 255] [Active ] [ ] [ ] [ 60] Fabric8 :: Camel Component (1.0.0.redhat-379) [ 266] [Active ] [ ] [Started] [ 60] A Camel Spring Route (1.0.0.SNAPSHOT)
Примечание. Идентификатор пакета для пакета из выходных данных вышеуказанной команды и использование команды ниже.
JBossFuse:karaf@root > update <bundle id> JBossFuse:karaf@root > update 266
Пакет не загружается
Это может произойти из-за следующих двух причин —
- Хранилище Maven не указано
- Пакет отсутствует в хранилище
Репозиторий Maven не указан
Maven — это встроенный инструмент, используемый для создания артефактов Предохранителя. Fuse сначала ищет в локальном репозитории Maven артефакты, когда мы запускаем команду для установки артефакта. Поэтому мы должны сообщить Fuse, где установлен Maven и путь к локальному хранилищу Mavens.
Отредактируйте $ FUSE_INSTALLATION_DIR / etc / org.ops4j.paxurl.mvn.cfg
Обновите следующие два свойства —
- org.ops4j.pax.url.mvn.settings = $ M2_HOME / conf /settings.xml
- org.ops4j.pax.url.mvn.localRepository = $ local_repo
Примечание. Пожалуйста, измените $ local_repo, указав фактический путь к локальному репозиторию, указанный в файле Mavens settings.xml.
Пакет не присутствует в репозитории
Если настройки Maven присутствуют, но все же возникают проблемы при загрузке пакета, убедитесь, что JAR пакетов находится в правильном месте в репозитории Maven.
Например, если следующий пакет выдает ошибки при загрузке —
МВН: com.tutorialpoint.app/camel-first-app/1.0-SNAPSHOT
Мы должны проверить в $ M2_REPO / com / tutorialpoint / app / camel-first-app / 1.0-SNAPSHOT наличие фактического JAR.
Примечание. $ M2_REPO необходимо заменить реальным путем к репозиторию Maven, который мы настроили для использования Fuse.
Невозможно войти в FMC (GUI на основе браузера)
Пользователи не созданы — если вы получаете следующий пользовательский интерфейс, но не можете войти в систему с сообщением «Не удалось войти, запрещено».
Проверьте, добавили ли вы пользователей в $ FUSE_INSTALLATION_HOME / etc / users.properties
Правильный формат для добавления пользователей —
Username = Password,Role
Гавтио порт отличается
Если вы даже не можете получить пользовательский интерфейс по адресу localhost: 8181 в браузере, проверьте, правильно ли вы указали порт в URL.
$ FUSE_INSTALLATION_HOME / и т.д. / org.ops4j.pax.web.cfg
Отредактируйте следующее свойство в файле, чтобы использовать порт, к которому вы хотите получить доступ.
org.osgi.service.http.port=8181
AMQ Broker не работает
Убедитесь, что порт 61616 открыт и не используется в данный момент другим портом. Если вы хотите изменить порт 61616 по умолчанию на тот же, вы можете отредактировать его в $ FUSE_INSTALLATION_HOME / etc / System.properties