JMS, служба очереди сообщений, вопрос, связанный с ESB - PullRequest
0 голосов
/ 11 мая 2011

Предположим, что в инфраструктуре SOA есть 2 настройки веб-сервисов A и B.

Веб-сервисы A зависят от информации, доступной из локально установленного приложения Desktop (это устаревшее приложение, основанное на программировании на C ++ и предоставляющее C ++API для предоставления информации, необходимой веб-службе A).

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

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

Предположим, что все в этом SOA основано на Java, кроме настольного приложения.

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

Я действительно хочу использовать технологии, связанные с SOA, хотя это может быть более сложно.

Приведенные выше детали:

Как я могу использовать JMS для решения этой проблемы?

Если JMS не является правильным решением, как насчет ESB и как я могу использовать ESB длярешить эту проблему?

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Связь с настольным приложением будет в значительной степени зависеть от того, какие различные методы приложение может выполнять.Если приложение имеет серверную часть базы данных, ESB может облегчить связь с предопределенными адаптерами для конкретной используемой базы данных.Если в приложении есть API-интерфейс, который можно использовать программным способом, это тоже метод.Я не уверен, что JMS будет подходящим решением, поскольку, учитывая ваш вариант использования, вы хотели бы получить синхронный ответ.Помещение JMS в середину (как-то) нарушит этот ответ и вернет асинхронный ответ.

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

1 голос
/ 13 мая 2011

Я думаю, что проблема сводится к веб-службе A Java, требующей обращения к настольному приложению C ++ для получения сведений о пользователе.

Если настольное приложение может использовать JMS с использованием Stomp и т. Д., Можно использовать ActiveMQ или HornetQ. Это также позволяет вам масштабировать A на несколько экземпляров на многих машинах и использовать JMS для запроса информации о пользователе из приложения для настольных компьютеров.

Другим вариантом является предоставление простого API (REST, TCP и т. Д.) В приложении для настольных компьютеров и создание веб-службы A для связи с приложением для настольных компьютеров, использующего это. Опять же, вы можете распределить A на несколько экземпляров для масштабируемости.

Вы можете использовать ESB для преобразования вызова REST в TCP, или SOAP в JMS и т. Д. Практически любое преобразование в любой. ESB UltraESB со свободным и открытым исходным кодом [http://adroitlogic.org] содержит много примеров и имеет небольшой вес (~ 35 МБ), поэтому «перерасход» будет минимальным по сравнению с> 300 МБ + ресурсоемкими ESB

...