Является ли Apache ServiceMix возможным решением? Это достаточно быстро?

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

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

Компонент будет

  1. Обработайте запрос, полученный от веб-уровня, и обработайте его, чтобы перевести его в формат, требуемый поставщиком услуг.
  2. Отправить запрос поставщику услуг
  3. Обработайте ответ, полученный от поставщика услуг, чтобы перевести его в формат, требуемый нашим приложением.

Можем ли мы использовать Apache Service Mix здесь? Достаточно ли быстро, чтобы обработать цикл "запрос-ответ" менее чем за 5 секунд (при условии, что поставщики услуг отправляют ответы менее чем за секунду).

ИЛИ ЖЕ

Можем ли мы использовать какой-либо другой ESB и достаточно ли ESB для удовлетворения наших требований?

Заранее спасибо.

Shardul.

6 ответов

Решение

Servicemix должен быть в состоянии справиться с этим. Основной вопрос, если вам даже нужно servicemix.

Если вы хотите, чтобы ваши компоненты работали в OSGi, вы можете использовать servicemix или karaf + camel (что-то вроде lightmix light).

Для связи между веб-интерфейсом и компонентом я бы использовал jms, а для реализации компонента я предлагаю использовать camel + pojos.

Если вам нужна дополнительная помощь с этим, не стесняйтесь связаться со мной снова. Кажется, вы уже нашли меня на IRC:-) имя пользователя: cschneide или cschneider

Что касается скорости: в интеграционных проектах сама инфраструктура обмена сообщениями / обработки данных редко является узким местом, а вместо этого является точкой соприкосновения с внешними сервисами.

Таким образом, единственный ответ "достаточно ли ServiceMix достаточно быстр" для вашего сценария - "да", потому что большую часть времени будет тратиться на взаимодействие с поставщиками услуг (т. Е. На ожидание ответа сети), а не на собственный код обработки сообщений SM.

На FuseESB версии 4.2 я достиг 15 000 вызовов в секунду на ноутбуке DualCore с 2 ГБ оперативной памяти. Звонки были сделаны в службу CXF, предоставляемую ServiceMix. Внутри был вызван один бин Spring, внедренный OSGi, который просто возвращал случайные данные. И ServiceMix может быть кластеризован. Поэтому я думаю, что это достаточно быстро, как контейнер Java.

Для получения последней информации о производительности ESB, вы можете посмотреть на производительность ESB - создание самого быстрого ESB

Что касается "достаточно быстро?" Фактически, вы можете посмотреть на http://esbperformance.org/ для сравнения производительности 8 ESB с открытым исходным кодом. В то время как большая часть ESB в настоящее время работает очень хорошо, UltraESB оказался самым эффективным ESB.

Глядя на ваши требования, это типичный вариант использования для любого ESB. Вы должны использовать возможности фильтрации и преобразования для реализации этого.

Фильтр будет решать, какой поток следует вызывать, основываясь на содержимом сообщения или свойствах, таких как входящий URL-адрес и т. Д., И переадресацию на нужный поток. Каждый поток должен быть снабжен необходимой логикой преобразования для вызова поставщика услуг. Таким же образом обратный ответ будет отправлен правильному потоку для выполнения обратного преобразования.

Отказ от ответственности: я работаю на компанию AdroitLogic, которая поддерживает UltraESB.

WSO2 ESB - еще одна крутая альтернатива. WSO2 ESB основан на платформе WSO2 Carbon, основанной на OSGI, на 100% бесплатной и с открытым исходным кодом и предлагает ряд образцов, которые вы можете попробовать из коробки. Кроме того, WSO2 - это не просто ESB, а комплексная SOA-платформа, где у нас есть ESB,Identity Server, Data Services Server, Business Process Server и т. Д., Работающие поверх Carbon на основе OSGi. Попробуйте.

Другие вопросы по тегам