Является ли CAMEL или другая платформа интеграции Enterprise более подходящей для этого варианта использования?

Мое приложение должно работать как промежуточное программное обеспечение (MW), где оно получает заказы (в форме XML) от различных клиентов, которые содержат идентификатор поставщика -------------- Приоритет 1, куда клиенты могут отправлять XML для одного из этих компонентов

1)JMS queue
2)File system
3)HTTP
4)Web service request(rest/soap)

Этот MW сначала проверит входящий запрос и отправит подтверждение клиентам, которые запросили заказ по их предпочтительным каналам. Информация о канале и конечной точке клиента существует во входящем XML.

Как только он получает заказ, он должен отправлять запросы на заказ различным поставщикам по их предпочтительным каналам в форме xml. У меня есть поставщик и информация о предпочитаемом им канале в моей базе данных.

Так что это сценарий использования Enterprise Integration.

Я планировал сделать это с использованием основных технологий Java. вот подход, который я планировал.

Будет четыре конечных точки прослушивателя / входа для каждого типа входящего запроса (очередь JMS, Файловая система, HTTP, запрос веб-службы (rest/soap)). Эти слушатели поместят строку xml в очередь jms. Это будет работать как регистратор и сделает процесс асинхронным.

Теперь у меня будет потребитель jms, который будет прослушивать очередь. (Потребитель может быть в той же системе или отличаться от производителя в зависимости от нагрузки на машину производителя). Этот потребитель будет анализировать строку XML для объектов Java. Выполните проверку. Отправьте подтверждение клиентам (подтверждение должно быть отправлено на основе предпочтений клиента. Я буду использовать фабрику обработки подтверждений, которая будет отправлять подтверждение на основе предпочтений). После завершения проверки преобразуйте это pojo в другой формат pojo, чтобы xstream/jaxb далее упорядочил его в формат xml и отправил поставщикам по их предпочтительному каналу (предпочтение поставщика хранится в db), например, через soap,jms, запрос файла и т. Д.

Некоторым я наткнулся на эту ссылку CAMEL http://java.dzone.com/articles/open-source-integration-apache и похоже, что она обеспечивает идеальное решение, и обнаружил, что это сценарий использования Enterprise Integration.

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

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

1 ответ

Решение

Что-то вроде Camel полностью подходит для этой задачи.

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

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

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

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

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

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