Цель данной статьи — дать краткое руководство о том, как получить возможности API-управления, предоставляемые apiman, для работы с JBoss Fuse, легкой, гибкой, интеграционной платформой, основанной на Apache Camel , реализации многих наиболее часто используемых шаблонов корпоративной интеграции. (ОПЗ).
Создание провайдера API в JBoss Fuse
Следующие несколько шагов помогут быстро начать развертывание приложений в JBoss Fuse. Для демонстрации я использую пример приложения REST (быстрый запуск), поставляемый вместе с установкой Fuse. Для получения дополнительной информации о разработке приложений для JBoss Fuse ознакомьтесь с материалами для разработчиков и другими ресурсами на сайте jboss.org.
Монтаж
Чтобы получить дистрибутив JBoss Fuse, посетите страницу загрузки JBoss Fuse . Установка JBoss Fuse очень проста, так как вам нужно только разархивировать дистрибутив, например:
unzip jboss-fuse-full-6.2.0.redhat-133.zip
Вы также можете включить администратора по умолчанию, раскомментировав последнюю строку в <fuse_dir>/etc/users.properties
. Без настроенного пользователя вы не сможете войти в консоль управления Fuse.
Запуск сервера
Для запуска Fuse просто выполните следующую команду <fuse_dir>/bin
:
./fuse
После загрузки JBoss Fuse создайте новый экземпляр Fuse Fabric. Для этого выполните fabric:create
команду из Fuse CLI:
JBossFuse:karaf@root> fabric:create
После запуска Fuse Fabric войдите в консоль управления Hawt.io, по умолчанию она должна быть доступна по адресу http: // localhost: 8181 . В перспективе Fabric на вкладках Containers нажмите кнопку Create , чтобы открыть форму Create New Container .
На странице « Создать новый контейнер» введите имя, которое вы хотите использовать для своего контейнера (например, my-rest-container), и обязательно выберите для него профиль rest. Это гарантирует, что Fabric подхватит REST Quickstart и развернет его в этом контейнере. Завершите операцию, нажав кнопку Создать и запустить контейнер .
Контейнер должен запускаться автоматически сразу после его создания, и конечная точка REST должна стать доступной. Если нет, выберите соответствующий контейнер и нажмите Пуск. Вы можете проверить все API, развернутые в вашем экземпляре Fuse Fabric, щелкнув раздел API на вкладке Services . Обратите внимание на поле Location — это базовый URL для реализации конечной точки. Мы будем использовать его позже в менеджере apiman.
Существует предварительно настроенный пользователь по умолчанию, поэтому вы можете проверить, было ли приложение успешно развернуто. Он доступен по адресу <location>/customerservice/customers/123
(например, http: // localhost: 8182 / cxf / crm / customerservice / Customers / 123 )
[sbunciak@sbunciak ~]$ http http://localhost:8182/cxf/crm/customerservice/customers/123
HTTP/1.1 200 OK
Content-Type: application/xml
Date: Tue, 07 Jul 2015 22:17:13 GMT
Server: Jetty(8.1.17.v20150415)
Transfer-Encoding: chunked
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns0:Customer xmlns:ns0="http://rest.fabric.quickstarts.fabric8.io/">
<ns0:id>123</ns0:id>
<ns0:name>John</ns0:name>
</ns0:Customer>
Настройте apiman для управления конечной точкой Fuse
Чтобы установить последнюю версию apiman, следуйте этому руководству . Процесс установки снова очень прост, все, что вам нужно сделать, это извлечь zip-оверлейный файл apiman поверх сервера Wildly 8 .
После завершения установки запустите apiman, выполнив следующую команду из <wildfly>/bin
папки:
./standalone.sh -c standalone-apiman.xml
Быстрая настройка государственной службы
В демонстрационных целях я буду создавать государственную службу, однако в реальной жизни вам может потребоваться настроить различные планы, различные контракты и т. Д. Пожалуйста, обратитесь к руководству пользователя apiman для получения более подробной информации.
Для управления API в apiman вам необходимо создать новую организацию, к которой будут принадлежать ваши API. Это легко сделать в менеджере apiman, обычно доступном по адресу: http: // localhost: 8080 / apimanui .
После входа в диспетчер apiman найдите разделы «Организации» на начальной странице, выберите ссылку « Создать новую организацию» , введите имя и нажмите кнопку « Создать организацию» . Это приведет вас к организации детальной странице , где вы можете создать новую службу, нажав на New Service под кнопкой Услуги вкладки:
Вам будет предложено указать название и версию для этой услуги. После успешного создания службы осталось немного, прежде чем вы сможете ее опубликовать и начать использовать. Во-первых, вам нужно предоставить базовый URL-адрес реализации на вкладке Реализация . Используйте базовый URL-адрес быстрого запуска REST и сохраните изменения:
Во-вторых, вы можете применить некоторые политики к этой государственной службе. Для этого перейдите на вкладку Policies и настройте политику по вашему выбору. Я использовал политику ограничения тарифов, чтобы ограничить использование этой услуги до 5 в минуту:
Теперь вы все готовы , чтобы на государственную службу, проверяя сделать эту услугу общественного под Plans вкладки сохранения изменений и нажав Publish кнопки (которая должна быть теперь включено).
После публикации службы перейдите на вкладку Конечная точка, чтобы найти URL-адрес, который будет использоваться для вызова этой общедоступной службы:
Тестирование вашей настройки
В зависимости от того, какую политику вы предоставили Государственной службе, вы можете столкнуться с различным поведением. Однако, если вы следовали этому руководству и назначили политику ограничения скорости после достижения максимального количества разрешенных запросов, вы получите вывод, подобный следующему:
- Первый запрос должен быть успешным:
[sbunciak@sbunciak ~]$ http https://localhost:8443/apiman-gateway/CustomerOrganization/CrmRestService/1.0/customerservice/customers/123 --verify=no
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/xml
Date: Tue, 07 Jul 2015 21:01:02 GMT
Server: Jetty(8.1.17.v20150415)
Transfer-Encoding: chunked
X-Powered-By: Undertow/1
X-RateLimit-Limit: 5
X-RateLimit-Remaining: 4
X-RateLimit-Reset: 57
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns0:Customer xmlns:ns0="http://rest.fabric.quickstarts.fabric8.io/">
<ns0:id>123</ns0:id>
<ns0:name>John</ns0:name>
</ns0:Customer>
- Выполнение 5 последовательных запросов должно завершиться с ошибкой
HTTP 429 Too Many Requests
:
[sbunciak@sbunciak ~]$ http https://localhost:8443/apiman-gateway/CustomerOrganization/CrmRestService/1.0/customerservice/customers/123 --verify=no
HTTP/1.1 429 Too Many Requests
Connection: keep-alive
Content-Length: 176
Content-Type: application/json
Date: Tue, 07 Jul 2015 21:00:51 GMT
Server: WildFly/8
X-Policy-Failure-Code: 10005
X-Policy-Failure-Message: Rate limit exceeded.
X-Policy-Failure-Type: Other
X-Powered-By: Undertow/1
X-RateLimit-Limit: 5
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 8
{
"failureCode": 10005,
"headers": {
"X-RateLimit-Limit": "5",
"X-RateLimit-Remaining": "0",
"X-RateLimit-Reset": "8"
},
"message": "Rate limit exceeded.",
"responseCode": 429,
"type": "Other"
}