Почему используется Apache Camel rest DSL вместо контроллера пружинной загрузки? - PullRequest
0 голосов
/ 19 апреля 2020

Я только что искал много тем о верблюде, многие из них упоминали, что Camel предоставил поддержку остальных API, но я не знаю, почему она это предоставляет? Поскольку он может интегрировать многие фреймворки, например, spring, и springmvc / springboot также предоставляют возможность отдыха.

Как новичок для верблюда, мой первый вопрос таков: какова польза / adv от apache верблюд для отдыха? зачем использовать верблюжий маршрут отдыха API, а не Springboot restcontroller? По крайней мере, вы можете видеть, что контроллер остальной части Springboot может предоставить остальные API с явным дизайном / реализациями, удобочитаемыми аннотациями и хорошо интегрирован с валидацией Spring, Swagger UI и т. Д. c.

Еще один вопрос от меня, если нужно использовать apache верблюд, можем ли мы использовать контроллер упора пружины для API отдыха и верблюда для других частей? Или не рекомендуется так делать?

Ответы [ 2 ]

3 голосов
/ 22 апреля 2020

Ну, Camel - это библиотека интеграции, которую можно использовать во многих средах . Может использоваться автономно, с Spring Framework, в Apache Karaf et c. Итак, это первое замечание:

Когда Camel используется без Spring, ничего не стоит, если Spring имеет отличную поддержку REST.

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

rest("/orders")
    .post()
    .to("activemq:queue:myQueue")

Это 3-строчная интеграция Camel, которая принимает вызовы REST от клиентов (POST) и отправляет полученные данные в очередь сообщений JMS. Здесь мы получили второй пункт:

Даже если Spring доступен, Camel должен обеспечить поддержку REST в Camel DSL, чтобы разрешить интеграцию REST с другими конечными точками

И да, Конечно, вы можете использовать Spring Framework для создания службы REST, а затем вызывать эту службу REST с верблюжьего маршрута. Но то, что невозможно, использует этот сервис Spring REST в качестве потребителя верблюжьего маршрута (пример из 3 строк выше).

1 голос
/ 05 мая 2020

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

  • , если вам нравится способ, которым Spring позволяет реализовывать ваш сервис, вы все равно можете воспользоваться обоими мирами и интегрировать свой @RestController с ваш Camel Route, используя istance FluentProducerTemplate.

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

Чаще всего использование Camel - это не просто сокращение количества строк кода. Camel предлагает вам мощную легковесную среду, более 280 компонентов, преобразователи типов и форматов данных, не говоря уже о EIP, поэтому REST DSL можно рассматривать как входную дверь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...