Я недавно провел перестрелку Camel vs Spring Integration с целью интеграции Apache Kafka . Несмотря на то, что я был заядлым разработчиком Spring, я с грустью обнаружил, что мое подозрение в отношении постоянно растущего стека проектов Spring подтверждается: Spring великолепен в качестве IOC-контейнера, служащего связующим звеном для других сред, но ему не удается предоставить жизнеспособные альтернативы эти рамки . Могут быть исключения из этого, а именно все, что связано с MVC, откуда пришел Spring и где он отлично справляется, но другие попытки предоставить новые функциональные возможности поверх функций контейнера терпят неудачу по трем причинам и сценарий использования SI Kafka подтверждает их все:
- Внедрение скучного и сложного в использовании DSL для XML-конфигурации.
- Страницы кода xml-конфигурации для подключения всех компонентов инфраструктуры.
- Недостающие ресурсы для обеспечения функциональности наравне с выделенными платформами.
Теперь вернемся к результатам моей перестрелки: самое главное, я впечатлен общей концепцией Camels маршрутов между конечными точками . Kafka легко интегрируется с этой концепцией, и для ее запуска достаточно трех линий конфигурации. Проблемы, возникшие в ходе процесса, аккуратно решены в обширной документации от команды проекта , а также во многих вопросах о Stackoverflow. И последнее, но не менее важное: существует полная интеграция в Spring , которая не оставляет желаний невыполненными.
С SI, напротив, документация для интеграции Kafka довольно интенсивна и все еще не может объяснить, как интегрировать Kafka. Интеграция Kafka нажата в SI-способ ведения дел, что добавляет дополнительную сложность. Другая документация, например на Stackoverflow также менее изобильный и менее полезный, чем для Camel.
Мой вывод: сапожник придерживается вашей профессии - используйте Spring в качестве контейнера и Camel в качестве основы системной интеграции.