Использование Camel в качестве быстрой внутренней шины со службами REST - PullRequest
1 голос
/ 14 марта 2012

Это тот случай использования, к которому я пытаюсь обратиться:

У меня есть:

  • клиент C, который является веб-приложением,

  • интерфейсный модуль A, предоставляющий REST API,

  • внутренний модуль B, также предоставляющий REST API. (Я не могу изменить этот модуль, который не мой, и который имеет только REST API)

Для одной из служб C вызывает A, которая вызывает B. Все происходит в REST. Это происходит быстро, поскольку вызовы REST являются синхронными (т.е. блокируются).

Теперь я бы хотел отделить A и B, чтобы A не знал непосредственно о B.

Так что мне интересно, как поставить Верблюда в качестве шины сообщений в середине. Это дало бы:

C --- (вызов REST) ​​----> A ----> Camel --- (вызов REST) ​​---> B


Мой вопрос

Является ли это хорошей идеей, и если да, будет ли она по-прежнему быстрой (если между A и B ничего нет, у меня есть ответ менее чем за 10 мс в локальной сети)?

брейк

Будет ли это работать так же с ServiceMix?

Спасибо!

1 Ответ

2 голосов
/ 14 марта 2012

Вы спрашиваете, является ли шина сообщений хорошей архитектурой, или вы спрашиваете, учитывая, что вы выбрали использование шины сообщений, если Camel / ServiceMix - правильное решение?

Я попробую оба - архитектура, основанная на сообщениях IMHO (особенно архитектуры, управляемые событиями), великолепна. Выполните поиск на Event-Driven Architectures на infoq.com для большого количества информации. Обеспечивает фантастическую развязку, масштабируемость, разделение задач и т. Д.

Будет ли это быстро? Слишком много факторов, чтобы ответить. Это, безусловно, будет немного больше затрат, чем одноранговый отдых, но, возможно, этого будет недостаточно. Также зависит от того, какого брокера обмена сообщениями вы выберете, если вам нужны выборочные очереди и т. Д. И т. Д. И т. Д. Я использую Camel для такого решения, и это «достаточно быстро» для того, что мне нужно. Вам придется это попробовать.

Не уверен, как ответить «будет ли он работать так же» .. ServiceMix использует Camel для своей маршрутизации, поэтому некоторые из них будут работать так же. Но ServiceMix также имеет встроенный ActiveMQ, поэтому, если вы решите использовать что-то другое ActiveMQ (например, RabbitMQ), то он будет работать по-другому:)

...