2015-04-15 3 views
1

У меня есть небольшой проект, в котором твиты из твиттера потребляются приложением, помещаются в очередь JMS на ActiveMQ, читаются из другого приложения, чтобы обогатить каждый твит, а затем возвращены в другую очередь JMS на сервере ActiveMQ. В настоящее время вся маршрутизация определяется внутри каждого приложения. Таким образом, маршрутизация из твиттера в очередь JMS определена в приложении A, а маршрутизация из одной очереди JMS в другую определена в приложении B.ActiveMQ и шаблоны интеграции: где реализовать?

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

Что я хочу - это решение, в котором у меня есть некоторые (микро) сервисы, такие как адаптер twitter и обогатитель, которые независимы друг от друга. Но где я тогда помещаю информацию о маршрутизации? Как-то в ActiveMQ? Есть ли способ легко настроить маршруты? Как-то это звучит как ESB, не так ли?

ответ

1

Я думаю, вы можете использовать центральный компонент Java, размещающий сервер Camel + Embedded ActiveMQ для интеграции различных приложений. Этот центральный компонент может иметь ваши микросервисы/обогатители, а также все маршруты, передающие данные между приложениями.

Camel предоставляет множество компонентов (VM, файл, JMS, RMI, Webservices и т. Д.), Которые вы можете использовать в качестве конечных точек, подключающихся к Application A/B. О канале Twitter вы можете поместить адаптер/прослушиватель twitter в этот центральный компонент, чтобы он мог связываться с маршрутами Camel через конечную точку прямой VM.

Это упрощает интеграцию. Все маршруты поддерживаются в центральном месте и отделяют сервер MQ, микросервисы и приложения.

enter image description here